source: doc/bibliography/cfa.bib @ 06cf47f

aaron-thesisarm-ehcleanup-dtorsdeferred_resndemanglerjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerresolv-newwith_gc
Last change on this file since 06cf47f was 06cf47f, checked in by Peter A. Buhr <pabuhr@…>, 5 years ago

changes to OOPSLA paper

  • Property mode set to 100644
File size: 222.9 KB
Line 
1% Conventions: uncross-referenced entries appear first, then
2%    cross-referenced entries.  In both groups, entries are sorted by their
3%    title field.  Lines like "% A" exist to speed searches.  The main
4%    paper on a language uses the language name as the citation key.  Other
5%    papers use ``<language name>:'' as a prefix.  Please consider leaving
6%    keyword lists and an abstract or comment for future generations, and
7%    put some identification in a contributer field.
8
9%    Predefined journal names:
10%  acmcs: Computing Surveys             acta: Acta Infomatica
11%  cacm: Communications of the ACM
12%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
13%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
14%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
15%  ipl: Information Processing Letters  jacm: Journal of the ACM
16%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
17%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
18%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
19%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
20%  toplas: ACM Trans. on Prog. Lang. & Sys.
21%  tcs: Theoretical Computer Science
22@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
23% @string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
24@string{ieeese="IEEE Transactions on Software Engineering"}
25% @string{ieeese="IEEE Trans. Softw. Eng."}
26@string{spe="Software---\-Practice and Experience"}
27% @string{spe="Softw. Pract. Exp."}
28@string{ccpe="Concurrency and Computation: Practice and Experience"}
29% @string{ccpe="Concurrency Comput. Pract. Exp."}
30@string{sigplan="SIGPLAN Notices"}
31% @string{sigplan="SIGPLAN Not."}
32@string{joop="Journal of Object-Oriented Programming"}
33% @string{joop="J. of Object-Oriented Program."}
34@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
35@string{osr="Operating Systems Review"}
36@string{pldi="Programming Language Design and Implementation"}
37@string{toplas="Transactions on Programming Languages and Systems"}
38@string{mathann="Mathematische Annalen"}
39% @string{mathann="Math. Ann."}
40
41% A
42
43@incollection{ABC++,
44    keywords    = {concurrency, parallel, distributed, C++},
45    contributer = {pabuhr@plg},
46    author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
47    title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
48    editor      = {Gregory V. Wilson and Paul Lu},
49    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
50    publisher   = {MIT Press},
51    address     = {New York},
52    series      = {Scientific and Engineering Computation Series},
53    year        = 1996,
54    pages       = {1-42},
55}
56
57@techreport{CL90abstract,
58    keywords    = {},
59    contributer = {gjditchfield@plg},
60    author      = {Luca Cardelli and Xavier Leroy},
61    title       = {Abstract Types and the Dot Notation},
62    institution = {Systems Research Center},
63    year        = 1990,
64    address     = {130 Lytton Avenue, Palo Alto, CA  94301},
65    number      = 56,
66    summary     = {
67        The existential types of Mitchell and Plotkin \cite{atet} model
68        abstract types, but their ``open'' notation is unlike the usual dot
69        notation used in programming languages.  This paper gives
70        translations between the ``open'' and ``dot'' forms, and suggests
71        extensions for nested and for parameterized abstractions.
72    }
73}
74
75@article{atet,
76    keywords    = {lambda calculus, polymorphism},
77    contributer = {gjditchfield@plg},
78    author      = {John C. Mitchell and Gordon D. Plotkin},
79    title       = {Abstract Types have Existential Type},
80    journal     = toplas,
81    year        = 1988,
82    month       = jul, volume = 10, number = 3, pages = {470-502},
83    abstract    = {
84        Abstract data type declarations appear in typed programming
85        languages like Ada, Alphard, CLU and ML.  This form of declaration
86        binds a list of identifiers to a type with associated operations, a
87        composite ``value'' we call a {\em data algebra}.  We use a
88        second-order typed lambda calculus SOL to show how data algebras
89        may be given types, passed as parameters, and returned as results of
90        function calls.  In the process, we discuss the semantics of
91        abstract data type declarations and review a connection between
92        typed programming languages and constructive logic.
93    }
94}
95
96@article{alphard:intro,
97    keywords    = {encapsulation, data abstraction},
98    contributer = {gjditchfield@plg},
99    author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
100    title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
101    journal     = ieeese,
102    year        = 1976,
103    month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
104    note        = {Reprinted in \cite{alphard}.},
105    abstract    = {
106        Alphard is a programming language whose goals include supporting
107        both the development of well-structured programs and the formal
108        verification of these programs.  This paper attempts to capture the
109        symbiotic influence of these two goals on the design of the
110        language.  To that end the language description is interleaved with
111        the presentation of a proof technique and discudssion of
112        programming methodology.  Examples to illustrate both the language
113        and the verification technique are included.
114    }
115}
116
117@book{Hilfinger83,
118    keywords    = {ada},
119    author      = {Paul N. Hilfinger},
120    title       = {Abstraction Mechanisms and Language Design},
121    publisher   = {MIT Press},
122    series      = {ACM Distinguished Dissertations},
123    year        = 1983,
124}
125
126@incollection{Lavender96,
127    author      = {R. Greg Lavender and Douglas C. Schmidt},
128    chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
129    title       = {Pattern Languages of Program Design 2},
130    editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
131    year        = 1996,
132    pages       = {483-499},
133    publisher   = {Addison-Wesley Longman Publishing},
134    address     = {Boston},
135}
136
137@article{Nierstrasz87,
138    keywords    = {Hybrid, active objects, object-oriented languages,
139                  object-based languages, delegation, concurrency},
140    contributer = {pabuhr@plg},
141    author      = {O. M. Nierstrasz},
142    title       = {Active Objects in {Hybrid}},
143    journal     = sigplan,
144    volume      = 22,
145    number      = 12,
146    month       = dec,
147    year        = 1987,
148    pages       = {243-253},
149    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
150    abstract    = {
151        Most object-oriented languages are strong on reusability or on
152        strong-typing, but weak on concurrency.  In response to this gap,
153        we are developing {\it Hybrid}, an object-oriented language in which
154        objects are the active entities.  Objects in Hybrid are organized
155        into {\it domains}, and concurrent executions into {\it activities}.
156        All object communications are based on remote procedure calls.
157        Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
158        this the mechanisms of {\it delegation\/} and {\it delay queues\/}
159        are added to enable switching and triggering of activities.
160        Concurrent subactivities and atomic actions are provided for
161        compactness and simplicity.  We show how solutions to many important
162        concurrent problems [sic], such as pipelining, constraint management
163        and ``administration'' can be compactly expressed using these
164        mechanisms.
165   },
166   comment      = {Mentions Thoth in reference to delegation}
167}
168
169@book{Actors,
170    keywords    = {actors, concurrency},
171    contributer = {pabuhr@plg},
172    author      = {Gul A. Agha},
173    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
174    publisher   = {MIT Press, Cambridge},
175    year        = 1986
176}
177
178@article{polymorphImpl,
179    keywords    = {Napier88},
180    contributer = {gjditchfield@plg},
181    author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
182    title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
183    journal     = toplas,
184    year        = 1991,
185    month       = jul,
186    volume      = 13,
187    number      = 3,
188    pages       = {342-371},
189    abstract    = {
190        Polymorphic abstraction provides the ability to write programs that
191        are independent of the form of the data over which they operate.
192        There are a number of different categories of polymorphic
193        expression---ad hoc and universal, which includes parametric and
194        inclusion---all of which have many advantages in terms of code
195        reuse and software economics.  It has proved difficult to provide
196        efficient implementations of polymorphism.  Here, we address this
197        problem and describe a new technique that can implement all forms
198        of polymorphism, use a conventional machine architecture, and
199        support nonuniform data representations.  Furthermore, the method
200        ensures that any extra cost of implementation applies to
201        polymorphic forms only, and allows such polymorphic forms to
202        persist over program invocations.
203    },
204    summary     = {
205        They give three ways to implement polymorphism: {\em textual
206        polymorphism}, which seems to be template instantiation, {\em
207        uniform polymorphism}, which they explain badly, and {\em tagged
208        polymorphism}, where object code performs type tests.
209
210        They use first-class procedures to implement polymorphism: routines
211        with type parameters are implemented as curried routines that
212        return a nested routine that refers to the type parameter.
213    }
214}
215
216@article{dim:ada,
217    keywords    = {Dimensional Analysis, Ada},
218    contributer = {gjditchfield@plg},
219    author      = {Paul N. Hilfinger},
220    title       = {An {Ada} Package for Dimensional Analysis},
221    journal     = toplas,
222    month       = apr,
223    year        = 1988,
224    volume      = 10,
225    number      = 2,
226    pages       = {189-203},
227}
228
229@mastersthesis{Younger91,
230    keywords    = {concurrency, C++, postponing requests},
231    contributer = {pabuhr@plg},
232    author      = {Brian M. Younger},
233    title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
234    school      = {University of Waterloo},
235    year        = 1991,
236    address     = {Waterloo, Ontario, Canada, N2L 3G1},
237}
238
239@inproceedings{Buhr92c,
240    keywords    = {concurrency},
241    contributer = {pabuhr@plg},
242    author      = {Peter A. Buhr and Glen Ditchfield},
243    title       = {Adding Concurrency to a Programming Language},
244    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
245    organization= {USENIX Association},
246    address     = {Portland, Oregon, U.S.A.},
247    month       = aug,
248    year        = 1992,
249    pages       = {207-224},
250}
251
252@article{Buhr89b,
253    keywords    = {concurrency, C++},
254    contributer = {pabuhr@plg},
255    author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
256    title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
257    journal     = sigplan,
258    volume      = 24,
259    number      = 4,
260    month       = apr,
261    year        = 1989,
262    pages       = {18-21},
263    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
264}
265
266@article{Knuth66,
267    keywords    = {N-thread software-solution mutual exclusion},
268    contributer = {pabuhr@plg},
269    author      = {Donald E. Knuth},
270    title       = {Additional Comments on a Problem in Concurrent Programming Control},
271    journal     = cacm,
272    month       = may,
273    year        = 1966,
274    volume      = 9,
275    number      = 5,
276    pages       = {321-322},
277    note        = {Letter to the Editor}
278}
279
280@article{DeBruijn67,
281    keywords    = {N-thread software-solution mutual exclusion},
282    contributer = {pabuhr@plg},
283    author      = {Nicolaas Govert de Bruijn},
284    title       = {Additional Comments on a Problem in Concurrent Programming Control},
285    journal     = cacm,
286    month       = mar,
287    year        = 1967,
288    volume      = 10,
289    number      = 3,
290    pages       = {137-138},
291    note        = {letter to the Editor}
292}
293
294@phdthesis{Krischer10,
295    author      = {Roy Krischer},
296    title       = {Advanced Concepts in Asynchronous Exception Handling},
297    school      = {University of Waterloo},
298    year        = 2010,
299    month       = dec,
300    address     = {Waterloo, Ontario, Canada, N2L 3G1},
301    optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
302    note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
303}
304
305@article{Buhr00a,
306    keywords    = {exception handling},
307    contributer = {pabuhr@plg},
308    author      = {Peter A. Buhr and W. Y. Russell Mok},
309    title       = {Advanced Exception Handling Mechanisms},
310    journal     = ieeese,
311    volume      = 26,
312    number      = 9,
313    month       = sep,
314    year        = 2000,
315    pages       = {820-836},
316}
317
318@book{Richter97,
319    keywords    = {Win32, threads},
320    author      = {Jeffrey M. Richter},
321    title       = {Advanced Windows},
322    publisher   = {Microsoft Press},
323    year        = 1997,
324    edition     = {3rd},
325}
326
327@article{Francez77,
328    keywords    = {parameter passing, named/positional arguments},
329    contributer = {pabuhr@plg},
330    author      = {Nissim Francez},
331    title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
332    journal     = cacm,
333    volume      = 20,
334    number      = 8,
335    month       = aug,
336    year        = 1977,
337    pages       = {604-605},
338}
339
340@manual{Akka,
341    keywords    = {Akka actor model},
342    contributer = {pabuhr@plg},
343    title       = {{A}kka {S}cala Documentation, Release 2.4.11},
344    organization= {Lightbend Inc.},
345    month       = sep,
346    year        = 2016,
347    note        = {\href{http://doc.akka.io/docs/akka/2.4/AkkaScala.pdf}{http://\-doc.akka.io/\-docs/\-akka/\-2.4/\-AkkaScala.pdf}},
348}
349
350@article{Algol60,
351    keywords    = {Algol60},
352    contributer = {pabuhr@plg},
353    author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
354                   J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
355                   and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
356    title       = {Revised Report on the Algorithmic Language Algol 60},
357    editor      = {Peter Nauer},
358    journal     = cacm,
359    volume      = 6,
360    number      = 1,
361    month       = jan,
362    year        = 1963,
363    pages       = {1-17},
364}
365
366@article{Mellor-Crummey91,
367    keywords    = {spin locks, compare-and-swap, barriers},
368    contributer = {pabuhr@plg},
369    author      = {John M. Mellor-Crummey and Michael L. Scott},
370    title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
371    journal     = tocs,
372    volume      = 9,
373    number      = 1,
374    month       = feb,
375    year        = 1991,
376    pages       = {21-65},
377}
378
379@article{Cormack81,
380    keywords    = {},
381    contributer = {gjditchfield@plg},
382    author      = {Gordon V. Cormack},
383    title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
384    journal     = sigplan,
385    year        = 1981,
386    month       = feb, volume = 16, number = 2, pages = {48-52},
387    comment     = {
388        A one-pass, top-down algorithm for overload resolution.  Input is a
389        parse tree and the desired result type, and output is the number of
390        solutions.  For each overloading of the root identifier with a
391        matching parameter list, recursively solve for each parameter for
392        the corresponding argument type---there should be one solution.
393    }
394}
395
396@book{Raynal86,
397    keywords    = {mutual exclusion, locks},
398    contributer = {pabuhr@plg},
399    author      = {M. Raynal},
400    title       = {Algorithms for Mutual Exclusion},
401    publisher   = {MIT Press},
402    address     = {Cambridge},
403    series      = {Scientific Computation Series},
404    year        = 1986,
405    note        = {Translated by D. Beeson},
406}
407
408@incollection{Gidenstam05,
409    keywords    = {lock free, dynamic memory allocation},
410    contributer = {pabuhr@plg},
411    author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
412    title       = {Allocating Memory in a Lock-free Manner},
413    editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
414    booktitle   = {Algorithms -- ESA 2005},
415    pages       = {329-342},
416    publisher   = {Springer},
417    address     = {New York},
418    year        = 2005,
419    volume      = 3669,
420    series      = {Lecture Notes in Computer Science},
421}
422
423@book{Sites92,
424    keywords    = {computers, Alpha},
425    contributer = {pabuhr@plg},
426    editor      = {Richard L. Sites},
427    title       = {Alpha Architecture Reference Manual},
428    publisher   = {Digital Press, Burlington},
429    year        = 1992,
430}
431
432@book{alphard,
433    keywords    = {Parametric polymorphism, alphard, iterators, nested types},
434    contributer = {gjditchfield@plg},
435    editor      = {Mary Shaw},
436    title       = {{ALPHARD}: Form and Content},
437    publisher   = {Springer},
438    address     = {New York},
439    year        = 1981,
440    comment     = {Collection of papers about Alphard.}
441}
442
443@article{Kessels77,
444    keywords    = {monitors},
445    contributer = {pabuhr@plg},
446    author      = {Joep L. W. Kessels},
447    title       = {An Alternative to Event Queues for Synchronization in Monitors},
448    journal     = cacm,
449    volume      = 20,
450    number      = 7,
451    month       = jul,
452    year        = 1977,
453    pages       = {500-503},
454    annote      = {
455    }
456}
457
458@article{descr,
459    keywords    = {X2, subclasses, inheritance, parameterized classes},
460    contributer = {gjditchfield@plg},
461    author      = {David Sandberg},
462    title       = {An Alternative to Subclassing},
463    journal     = sigplan,
464    volume      = {21},    number = {11},
465    pages       = {424-428},
466    month       = nov, year = 1986,
467    comment     = {
468        The Smalltalk class hierarchy has three uses: factoring out code;
469        ``Abstraction superclasses'' such as Collection; rapid construction
470        of new classes by incremental change.
471
472        ``A descriptive class specifies a partial behavior by specifying a
473        set of procedure headings that describe what can be done with
474        instances of classes that belong to the descriptive class.''  An
475        ``instance'' statement declares a class to be an instance of a
476        descriptive class and defines the correspondence between
477        operations.  Procedures with descriptive class parameters take any
478        instance as arguments.  Descriptive classes can describe relations
479        like ``c is a collection with element type e'', but how such things
480        are used isn't explained.
481       
482        For each descriptive class used in a parameter list, an implicit
483        parameter is created that is passed a vector of procedures.
484    }
485}
486
487@incollection{Matsuoka93,
488    keywords    = {inheritance anomaly},
489    contributer = {pabuhr@plg},
490    author      = {Satoshi Matsuoka and Akinori Yonezawa},
491    title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
492    booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
493    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
494    publisher   = {MIT Press},
495    address     = {New York},
496    year        = 1993,
497    pages       = {107-150},
498}
499
500@article{Sinha00,
501    author      = {Saurabh Sinha and Mary Jean Harrold},
502    title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
503    journal     = ieeese,
504    year        = 2000,
505    month       = sep,
506    volume      = 26,
507    number      = 9,
508    pages       = {849--871},
509}
510
511@inproceedings{Robillard99,
512    author      = {Martin P. Robillard and Gail C. Murphy},
513    title       = {Analyzing Exception Flow in {J}ava Programs},
514    booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
515                   with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
516    year        = 1999,
517    pages       = {322--337},
518    isbn        = {3-540-66538-2},
519    location    = {Toulouse, France},
520    doi         = {http://doi.acm.org/10.1145/318773.319251},
521    publisher   = {Springer},
522    address     = {London, UK},
523}
524
525@book{C++,
526    keywords    = {C++, ANSI},
527    author      = {Margaret A. Ellis and Bjarne Stroustrup},
528    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
529    publisher   = {Addison-Wesley},
530    address     = {Boston},
531    year        = 1990,
532    edition     = {1st},
533}
534
535@book{APL,
536    keywords    = {APL},
537    contributer = {pabuhr@plg},
538    author      = {K. E. Iverson},
539    title       = {A Programming Language},
540    publisher   = {Wiley, New York},
541    year        = 1962
542}
543
544@article{PS-Algol:old,
545    author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
546    title       = {An Approach to Persistent Programming},
547    journal     = {The Computer Journal},
548    year        = 1983,
549    volume      = 26,
550    number      = 4,
551    pages       = {360-365},
552}
553
554@article{Kessels82,
555    keywords    = {concurrency, critical section},
556    contributer = {pabuhr@plg},
557    author      = {Joep L. W. Kessels},
558    title       = {Arbitration Without Common Modifiable Variables},
559    journal     = acta,
560    volume      = 17,
561    number      = 2,
562    month       = jun,
563    year        = 1982,
564    pages       = {135-141},
565}
566
567@article{Buhr95a,
568    keywords    = {concurrency, library approach},
569    contributer = {pabuhr@plg},
570    author      = {Peter A. Buhr},
571    title       = {Are Safe Concurrency Libraries Possible?},
572    journal     = cacm,
573    month       = feb,
574    year        = 1995,
575    volume      = 38,
576    number      = 2,
577    pages       = {117-120},
578}
579
580@book{ARMv7,
581    key         = {ARM processor},
582    title       = {ARM Architecture Reference Manual},
583    publisher   = {ARM},
584    volume      = {ARM DDI 0406C.b (ID072512)},
585    year        = 2012,
586}
587
588@book{Herlihy08,
589    contributer = {pabuhr@plg},
590    author      = {Herlihy, Maurice and Shavit, Nir},
591    title       = {The Art of Multiprocessor Programming},
592    year        = 2008,
593    isbn        = {0123705916, 9780123705914},
594    publisher   = {Morgan Kaufmann Publishers},
595    address     = {San Francisco},
596}
597
598@inproceedings{Chung10,
599    keywords    = {transactional memory, lock-free programming, x86 architecture},
600    contributer = {pabuhr@plg},
601    author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
602    title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
603    booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
604    series      = {MICRO '43},
605    year        = 2010,
606    pages       = {39--50},
607    numpages    = {12},
608    publisher   = {IEEE Computer Society},
609    address     = {Washington, DC, USA},
610}
611
612@article{Buhr94a,
613    keywords    = {assignment, parameter passing, multiple assignment},
614    contributer = {pabuhr@plg},
615    author      = {P. A. Buhr and David Till and C. R. Zarnke},
616    title       = {Assignment as the Sole Means of Updating Objects},
617    journal     = spe,
618    month       = sep,
619    year        = 1994,
620    volume      = 24,
621    number      = 9,
622    pages       = {835-870},
623}
624
625@inproceedings{Krischer08,
626    keywords    = {exception handling, asynchronous, blocked tasks},
627    contributer = {pabuhr@plg},
628    author      = {Roy Krischer and Peter A. Buhr},
629    title       = {Asynchronous Exception Propagation in Blocked Tasks},
630    booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
631    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
632    address     = {Atlanta, U.S.A},
633    month       = nov,
634    year        = 2008,
635    pages       = {8-15},
636}
637
638@article{oop:modpascal,
639    keywords    = {ModPascal},
640    contributer = {gjditchfield@plg},
641    author      = {Walter G. Olthoff},
642    title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
643    journal     = sigplan,
644    volume      = 21,
645    number      = 11,
646    pages       = {429-443},
647    month       = nov,
648    year        = 1986
649}
650
651@inproceedings{Shen91,
652    keywords    = {Ada, polymorphism},
653    contributer = {pabuhr@plg},
654    author      = {Jun Shen and Gordon V. Cormack},
655    title       = {Automatic instantiation in Ada},
656    booktitle   = {Proceedings of the ACM Tri-Ada Conference},
657    organization= {ACM},
658    address     = {San Jose, California, U.S.A},
659    month       = oct,
660    year        = 1991,
661    pages       = {338-346},
662}
663
664@article{Havender68,
665    keywords    = {deadlock},
666    contributer = {pabuhr@plg},
667    author      = {J. W. Havender},
668    title       = {Avoiding Deadlock in Multitasking Systems},
669    journal     = ibmsj,
670    volume      = 7,
671    number      = 2,
672    year        = 1968,
673    pages       = {74-84},
674}
675
676% B
677
678@incollection{beta:old,
679    keywords    = {beta, patterns, virtual types},
680    contributer = {gjditchfield@plg},
681    author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
682    title       = {The BETA Programming Language},
683    booktitle   = {Research Directions in Object-Oriented Programming},
684    publisher   = {MIT Press},
685    series      = {Computer Systems Series},
686    year        = 1987,
687    pages       = {7-48},
688    editor      = {Bruce Shriver and Peter Wegner}
689}
690
691@article{Knudsen87,
692    keyword     = {static exception handling mechanism, BETA, sequel},
693    contributor = {wyrmok@plg},
694    author      = {J{\o}rgen Lindskov Knudsen},
695    title       = {Better Exception Handling in Block Structured Systems},
696    journal     = {IEEE Software},
697    year        = 1987,
698    month       = may,
699    volume      = 4,
700    number      = 3,
701    pages       = {40-49},
702    comments    = {
703        Going up the call hierarchy to look for a handler does not fit an
704        otherwise statically scoped language. Also, not knowing which handler
705        to be used when raising an abnormal event is seen as a weakness of the
706        (dynamic) exception handling mechanism. Knudsen believed that raising
707        an exception should specify the handler for the exception -- the
708        handler is chosen when the exception is raised.  However, I don't think
709        his scheme can solve the problem, especially with all the callback
710        routines commonly found in OO programming.
711
712        BETA exception handling mechanism uses his work as a foundation.
713        However, I don't see any benefits BETA has over other language that is
714        a direct consequence of Knudsen's work. On the other hand, my knowledge
715        on BETA is very limited.
716        }
717}
718
719@book{BCPL,
720    keywords    = {BCPL},
721    contributer = {pabuhr@plg},
722    author      = {M. Richards and C. Whitby-Strevens},
723    title       = {{BCPL} -- The Language and Its Compiler},
724    publisher   = {Cambridge University Press, Cambridge},
725    year        = 1979,
726}
727
728@incollection{Madsen87,
729    keywords    = {nested classes},
730    contributer = {pabuhr@watmsg},
731    author      = {Ole Lehrmann Madsen},
732    title       = {Block Structure and Object Oriented Languages},
733    booktitle   = {Research Directions in Object-Oriented Programming},
734    editor      = {Bruce Shriver and Peter Wegner},
735    publisher   = {MIT Press},
736    series      = {Computer Systems Series},
737    year        = 1987,
738    pages       = {113-128}
739}
740
741@inproceedings{booleanClasses,
742    keywords    = {specifications},
743    contributer = {gjditchfield@plg},
744    author      = {David McAllester and Ramin Zabih},
745    title       = {Boolean Classes},
746    crossref    = "OOPSLA86",
747    pages       = {417-423},
748    abstract    = {
749        We extend the notion of class so that any Boolean combination of
750        classes is also a class.  Boolean classes allow greater precision
751        and conciseness in naming the class of objects governed a
752        particular method [sic].  A class can be viewed as a predicate
753        which is either true or false of any given object.  Unlike
754        predicates however classes have an inheritance hierarchy which is
755        known at compile time.  Boolean classes extend the notion of class,
756        making classes more like predicates, while preserving the compile
757        time computable inheritance hierarchy.
758    },
759    comment = {
760        Classes are predicates; if object {\tt o} is in class {\tt C}, then
761        {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
762        {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
763        {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
764        o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
765        class, it is a superclass of {\tt C}.  Some class expressions, i.e.
766        {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
767        c)}, can't be given methods or members because almost all classes
768        would inherit them, violating modularity.  The rules for spotting
769        these problems are complex.  Determining if one class inherits from
770        another needs an exponential algorithm.
771    }
772}
773
774@misc{BoostCoroutines15,
775    keywords    = {Boost Coroutine Library},
776    contributer = {pabuhr@plg},
777    author      = {Oliver Kowalke},
778    title       = {Boost Coroutine Library},
779    year        = 2015,
780    note        = {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
781                  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}} [Accessed September 2016]},
782}
783
784@mastersthesis{Krischer02,
785    author      = {Roy Krischer },
786    title       = {Bound Exceptions in Object-Oriented Programming Languages},
787    school      = {Universit\"at Mannheim},
788    address     = {Mannheim, Deutschland},
789    year        = 2002,
790    month       = oct,
791    type        = {Diplomarbeit},
792    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-KrischerThesis.ps.gz}}},
793}
794
795@inproceedings{Buhr03,
796    keywords    = {exception handling, bound handler},
797    contributer = {pabuhr@plg},
798    author      = {Peter A. Buhr and Roy Krischer},
799    title       = {Bound Exceptions in Object Programming},
800    booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
801                  Towards Emerging Application Areas and New Programming Paradigms},
802    organization= {ECOOP},
803    address     = {Darmstadt, Germany},
804    month       = jul,
805    year        = 2003,
806    pages       = {20-26},
807}
808%    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
809
810@inproceedings{Buhr06b,
811    keywords    = {exception handling, bound exceptions},
812    author      = {Peter A. Buhr and Roy Krischer},
813    title       = {Bound Exceptions in Object-Oriented Programming},
814    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
815    booktitle   = {Advanced Topics in Exception Handling Techniques},
816    publisher   = {Springer},
817    series      = {Lecture Notes in Computer Science},
818    volume      = 4119,
819    year        = 2006,
820    pages       = {1-21}
821}
822
823% C
824
825@book{C,
826    keywords    = {C},
827    contributer = {pabuhr@plg},
828    author      = {Brian W. Kernighan and Dennis M. Ritchie},
829    title       = {The {C} Programming Language},
830    publisher   = {Prentice-Hall},
831    address     = {Englewood Cliffs},
832    year        = 1988,
833    edition     = {2nd},
834    series      = {Prentice-Hall Software Series},
835    comment     = {
836         based on draft-proposed ANSI C
837    }
838}
839
840@book{C:old,
841    keywords    = {C},
842    contributer = {pabuhr@plg},
843    author      = {Brian W. Kernighan and Dennis M. Ritchie},
844    title       = {The {C} Programming Language},
845    publisher   = {Prentice-Hall},
846    address     = {Englewood Cliffs},
847    year        = 1978,
848    edition     = {1st},
849}
850
851@manual{ANSI89:C,
852    keywords    = {ANSI C 89},
853    contributer = {gjditchfield@plg},
854    title       = {American National Standard for Information Systems -- Programming Language -- {C}},
855    organization= {American National Standards Institute},
856    address     = {1430 Broadway, New York, New York  10018},
857    month       = dec,
858    year        = 1989,
859    note        = {X3.159-1989}
860}
861
862@manual{C11,
863    keywords    = {ISO/IEC C 11},
864    contributer = {pabuhr@plg},
865    key         = {C11},
866    title       = {American National Standard Information technology -- Programming Languages -- {C}},
867    organization= {International Standard ISO/IEC 9899-2011[2012]},
868    publisher   = {International Standard Organization},
869    address     = {http://www.iso.org},
870    year        = 2012,
871}
872
873@manual{C++Concepts,
874    keywords    = {ISO/IEC TS 19217:2015},
875    contributer = {a3moss@uwaterloo.ca},
876    key         = {C++ Concepts},
877    title       = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts},
878    organization= {International Standard ISO/IEC TS 19217:2015},
879    publisher   = {International Standard Organization},
880    address     = {http://www.iso.org},
881    year        = 2015
882}
883
884@mastersthesis{Esteves04,
885    keywords    = {Cforall, parametric polymorphism, overloading},
886    contributer = {pabuhr@plg},
887    author      = {Rodolfo Gabriel Esteves},
888    title       = {C$\forall$, a Study in Evolutionary Design in Programming Languages},
889    school      = {School of Computer Science, University of Waterloo},
890    year        = 2004,
891    address     = {Waterloo, Ontario, Canada, N2L 3G1},
892    note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
893}
894
895@inproceedings{c++scheme,
896    keywords    = {},
897    contributer = {gjditchfield@plg},
898    author      = {Vincent F. Russo and Simon M. Kaplan},
899    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
900    booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
901    year        = 1988,
902    pages       = {95-108},
903    summary     = {
904        The SIOD interpreter for a Scheme subset, written in C, has a
905        tagged union representing data objects, and read(), eval(), and
906        print() functions that are basically large switch statements that
907        switch based on the tag.  The authors rewrote it to use a class
908        with virtual read(), eval(), and print() members, without changing
909        any algorithms.  The result was more modular, more easily
910        extensible, more reliable, and slightly faster.
911    },
912    comment     = {
913        The evidence given is thin.
914        }
915}
916
917@article{doskernel,
918    keywords    = {light weight processes},
919    contributer = {gjditchfield@plg},
920    author      = {Tom Green},
921    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
922    journal     = {Dr. Dobb's Journal of Software Tools},
923    year        = 1989,
924    month       = feb, volume = 14, number = 2, pages = {45-51},
925    comment     = {
926       A light-weight multitasking kernel for MS-DOS.  A task\_control
927       object holds task objects, which may block themselves on signal
928       objects.  Task switching is normally preemptive, but tasks can turn
929       off preemption before calling non-reentrant routines.  Source code
930       is given.
931    }
932}
933
934@inproceedings{Doeppner87,
935    keywords    = {concurrency},
936    contributer = {pabuhr@plg},
937    author      = {Thomas W. Doeppner and Alan J. Gebele},
938    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
939    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
940    organization= {USENIX Association},
941    address     = {Santa Fe, New Mexico, U.S.A},
942    month       = nov,
943    year        = 1987,
944    pages       = {94-107},
945}
946
947@book{Lippman91,
948    keywords    = {C++},
949    contributer = {pabuhr@plg},
950    author      = {Stanley B. Lippman},
951    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
952    publisher   = {Addison-Wesley},
953    address     = {Boston},
954    year        = 1991,
955    edition     = {2nd},
956    note        = {QA76.73.C15L57},
957}
958
959@book{c++:v1,
960    keywords    = {C++},
961    contributer = {gjditchfield@plg},
962    author      = {Bjarne Stroustrup},
963    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
964    publisher   = {Addison-Wesley},
965    address     = {Boston},
966    year        = 1986,
967    edition     = {1st},
968    series      = {Addison-Wesley Series in Computer Science}
969}
970
971@book{c++:v2,
972    keywords    = {C++},
973    contributer = {pabuhr@plg},
974    author      = {Bjarne Stroustrup},
975    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
976    publisher   = {Addison-Wesley},
977    address     = {Boston},
978    year        = 1991,
979    edition     = {2nd},
980}
981
982@book{c++:v3,
983    keywords    = {C++},
984    contributer = {pabuhr@plg},
985    author      = {Bjarne Stroustrup},
986    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
987    publisher   = {Addison Wesley Longman},
988    year        = 1997,
989    edition     = {3rd},
990}
991
992@manual{Csharp,
993    keywords    = {C#},
994    contributer = {pabuhr@plg},
995    title       = {C\# Language Specification, Standard ECMA-334},
996    organization= {ECMA International Standardizing Information and Communication Systems},
997    month       = jun,
998    year        = 2006,
999    edition     = {4th},
1000}
1001
1002@article{Buhr85,
1003    keywords    = {goto, multi-exit loop},
1004    contributer = {pabuhr@plg},
1005    author      = {P. A. Buhr},
1006    title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
1007    journal     = sigplan,
1008    volume      = 20,
1009    number      = 11,
1010    month       = nov,
1011    year        = 1985,
1012    pages       = {14-22}
1013}
1014
1015@techreport{cforall-ug,
1016    keywords    = {cforall, user guide},
1017    contributer = {pabuhr@plg},
1018    author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
1019    title       = {\mbox{\mdseries\sffamily C{$\mathbf{\forall}$}}\ Users Guide, Version 0.1},
1020    institution = {Department of Computer Science, University of Waterloo},
1021    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1022    month       = oct,
1023    year        = 2001,
1024    note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-\char`\~cforall/\-cfa.ps}},
1025}
1026
1027@manual{cforall,
1028    keywords    = {polymorphism},
1029    contributer = {gjditchfield@plg},
1030    author      = {Glen Ditchfield},
1031    title       = {Cforall Reference Manual and Rationale},
1032    edition     = {Revision 1.82},
1033    month       = jan,
1034    year        = 1998,
1035    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
1036}
1037
1038@book{Yourdon79,
1039    keywords    = {software engineering},
1040    contributer = {pabuhr@plg},
1041    editor      = {Edward Nash Yourdon},
1042    title       = {Classics in Software Engineering},
1043    publisher   = {Yourdon Press},
1044    address     = {New York},
1045    year        = 1979,
1046}
1047
1048@inproceedings{Crnogorac98,
1049    keywords    = {inheritance anomaly},
1050    contributer = {pabuhr@plg},
1051    author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
1052    title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
1053    editor      = {Eric Jul},
1054    booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
1055    series      = {Lecture Notes in Computer Science},
1056    publisher   = {Springer},
1057    volume      = 1445,
1058    year        = 1998,
1059    pages       = {571-601},
1060    ISBN        = {3-540-64737-6},
1061    ISSN        = {0302-9743},
1062    abstract    = {
1063        Inheritance is one of the key concepts in object-oriented rogramming. However, the
1064        usefulness of inheritance in concurrent object-oriented programming is greatly
1065        reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
1066        by undesirable re-definitions of inherited code. The problem is aggravated by the
1067        lack of a formal analysis, with a multitude of differing proposals and conflicting
1068        opinions causing the current state of research, and further directions, to be
1069        unclear. In this paper we present a formal analysis of inheritance anomaly in
1070        concurrent object-oriented programming. Starting from a formal definition of the
1071        problem we develop a taxonomy of the anomaly, and use it to classify the various
1072        proposals. As a result, the major ideas, trends and limitations of the various
1073        proposals are clearly exposed. Formal analysis of the anomaly and a thorough
1074        exposition of its causes and implications are the pre-requisites for a successful
1075        integration of inheritance and concurrency.
1076    },
1077}
1078
1079@book{CLU,
1080    keywords    = {CLU},
1081    contributer = {gjditchfield@plg},
1082    author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
1083                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
1084    title       = {CLU Reference Manual},
1085    publisher   = {Springer},
1086    address     = {New York},
1087    year        = 1981,
1088    volume      = 114,
1089    series      = {Lecture Notes in Computer Science}
1090}
1091
1092@manual{Cobol14,
1093    keywords    = {ISO/IEC Cobol 14},
1094    contributer = {pabuhr@plg},
1095    key         = {Cobol14},
1096    title       = {Programming Languages -- {Cobol}},
1097    edition     = {2nd},
1098    organization= {International Standard ISO/IEC 1989:2014},
1099    publisher   = {International Standard Organization},
1100    address     = {http://www.iso.org},
1101    year        = 2014,
1102}
1103
1104@article{coagulation,
1105    keywords    = {register allocation, instruction selection, jello},
1106    contributer = {gjditchfield@plg},
1107    author      = {Michael Karr},
1108    title       = {Code Generation by Coagulation},
1109    journal     = sigplan,
1110    year        = 1984,
1111    month       = jun, volume = 19, number = 6, pages = {1-12},
1112    note        = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
1113    abstract    = {
1114        This paper describes a new approach to code-generation.  The
1115        central tenet is that there must be a more intimate coupling
1116        between register allocation and instruction selection than exists
1117        in present-day technology.  This is achieved by generating code in
1118        very small regions and gradually coalescing the part of the program
1119        that is ``compiled''.
1120    },
1121    comment     = {
1122        Imagine the program, including the subroutines, spread out over a
1123        table, with the compiler dropping Jello on the parts as they are
1124        compiled.  At first little drops appear in seemingly random places.
1125        These get bigger and combine with other drops to form growing
1126        globs.  When two globs meet, ripples will go out through each as
1127        they adjust to each other's presence, although the parts of the
1128        globs that formed first are less affected by the ripples.  When
1129        compilation is complete, there is one congealed mass.
1130    }
1131}
1132
1133@article{Soloway83,
1134    keywords    = {goto, structure programming},
1135    contributer = {pabuhr@plg},
1136    author      = {E. Soloway and J. Bonar and K. Ehrlich},
1137    title       = {Cognitive Strategies and Looping Constructs: An Empirical Study},
1138    journal     = cacm,
1139    month       = nov,
1140    year        = 1983,
1141    volume      = 26,
1142    number      = 11,
1143    pages       = {853-860},
1144}
1145
1146@book{sml:commentary,
1147    author      = {Robin Milner and Mads Tofte},
1148    title       = {Commentary on Standard {ML}},
1149    publisher   = {MIT Press},
1150    address     = {Cambridge},
1151    year        = 1991
1152}
1153
1154@article{Hyman66,
1155    keywords    = {mutual exclusion, software solution, incorrect},
1156    contributer = {pabuhr@plg},
1157    author      = {Harris Hyman},
1158    title       = {Comments on a Problem in Concurrent Programming Control},
1159    journal     = cacm,
1160    month       = jan,
1161    year        = 1966,
1162    volume      = 9,
1163    number      = 1,
1164    pages       = {45},
1165    note        = {Letter to the Editor}
1166}
1167
1168@inproceedings{clos,
1169    keywords    = {},
1170    contributer = {gjditchfield@plg},
1171    author      = {Linda G. DeMichiel and Richard P. Gabriel},
1172    title       = {The Common Lisp Object System: An Overview},
1173    booktitle   = {ECOOP '87. European Conference on Object-Oriented Programming},
1174    year        = 1987,
1175    pages       = {151-170},
1176    publisher   = {Springer}
1177}
1178
1179@book{CommonLisp,
1180    keywords    = {common lisp},
1181    contributer = {pabuhr@plg},
1182    author      = {Guy Steele},
1183    title       = {COMMON LISP: The Language},
1184    publisher   = {Digital Press},
1185    address     = {New York},
1186    year        = 1984
1187}
1188
1189@article{CommonLoops,
1190    author      = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
1191    title       = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
1192    address     = {Portland, Oregon, U.S.A.},
1193    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
1194    year        = 1986,
1195    month       = sep,
1196    pages       = {17-29},
1197}
1198
1199@article{co-overview,
1200    keywords    = {CommonObjects, implementation, encapsulation},
1201    contributer = {gjditchfield@plg},
1202    author      = {Alan Snyder},
1203    title       = {CommonObjects: An Overview},
1204    journal     = sigplan,
1205    year        = 1986,
1206    month       = oct, volume = 21, number = 10, pages = {19-28},
1207    note        = {Object Oriented Programming Workshop}
1208}
1209
1210@article{CSP,
1211    keywords    = {CSP, concurrency},
1212    contributer = {pabuhr@plg},
1213    author      = {C. A. R. Hoare},
1214    title       = {Communicating Sequential Processes},
1215    journal     = cacm,
1216    month       = aug,
1217    year        = 1978,
1218    volume      = 21,
1219    number      = 8,
1220    pages       = {666-677}
1221}
1222
1223@book{Hoare85,
1224    author      = {C. A. R. Hoare},
1225    title       = {Communicating Sequential Processes},
1226    year        = 1985,
1227    isbn        = {0-13-153271-5},
1228    publisher   = {Prentice-Hall},
1229    address     = {Upper Saddle River, NJ, USA},
1230    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
1231}
1232
1233@article{Hansen72a,
1234    keywords    = {monitors, automatic signal},
1235    contributer = {pabuhr@plg},
1236    author      = {Per {Brinch Hansen}},
1237    title       = {A Comparison of Two Synchronizing Concepts},
1238    journal     = acta,
1239    volume      = 1,
1240    year        = 1972,
1241    pages       = {190-199},
1242}
1243
1244@book{Aho06,
1245    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
1246    title       = {Compilers: Principles, Techniques, and Tools},
1247    edition     = {2nd},
1248    year        = {2006},
1249    publisher   = {Addison-Wesley Longman Publishing},
1250    address     = {Boston, MA, USA},
1251}
1252
1253@article{Bacon94,
1254    keywords    = {parallelizing compiler},
1255    contributer = {pabuhr@plg},
1256    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
1257    title       = {Compiler Transformations for High-Performance Com\-puting},
1258    journal     = acmcs,
1259    volume      = 26,
1260    number      = 4,
1261    month       = dec,
1262    year        = 1994,
1263    pages       = {345-420},
1264}
1265
1266@inproceedings{Berger01,
1267    author      = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
1268    title       = {Composing High-Performance Memory Allocators},
1269    booktitle   = {{SIGPLAN} Conference on Programming Language Design and Implementation},
1270    pages       = {114-124},
1271    year        = 2001,
1272    url         = {http://citeseer.ist.psu.edu/berger01composing.html}
1273} 
1274
1275@article{Andrews83,
1276    keywords    = {general concurrency},
1277    contributer = {pabuhr@plg},
1278    author      = {Gregory R. Andrews and Fred B. Schneider},
1279    title       = {Concepts and Notations for Concurrent Programming},
1280    journal     = acmcs,
1281    volume      = 15,
1282    number      = 1,
1283    month       = mar,
1284    year        = 1983,
1285    pages       = {3-43},
1286}
1287
1288@mastersthesis{Mok97,
1289    author      = {Wing Yeung Russell Mok},
1290    title       = {Concurrent Abnormal Event Handling Mechanisms},
1291    school      = {University of Waterloo},
1292    year        = 1997,
1293    month       = sep,
1294    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1295    note        = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
1296}
1297
1298@article{Gehani86,
1299    keywords    = {Concurrent programming, C, Distributed systems, rendezvous},
1300    contributer = {dgharriss@plg},
1301    author      = {N. H. Gehani and W. D. Roome},
1302    title       = {{Concurrent C}},
1303    journal     = spe,
1304    volume      = 16,
1305    number      = 9,
1306    month       = sep,
1307    year        = 1986,
1308    pages       = {821-844},
1309    abstract    = {
1310        Our objective is to enhance C so that it can be used to write
1311        concurrent programs that can run efficiently on both single computers
1312        and multicomputers.  Our concurrent programming extensions to C are
1313        based on the {\it rendezvous\/} concept.  These extensions include
1314        mechanisms for the declaration and creation of processes, for process
1315        synchronization and interaction, for process termination and abortion.
1316        We give a rationale for our decisions and compare Concurrent C
1317        extensions with the concurrent programming facilities in Ada.
1318        Concurrent C has been implemented on the UNIX system running on a
1319        single processor.  A distributed version of Concurrent C is being
1320        implemented.
1321   },
1322   comment      = {
1323        Select with guarded and screened accepts.  Typed processes.
1324        Process-valued expressions and process variables.  Processes have
1325        execution priority: Create {\em process-type-name}(args) [with
1326        priority(p)],
1327        and the priority can be changed on the fly.  Complicated guard/
1328        screen structure on accept: accept {\em transaction}(param names)
1329        [suchthat (exp)] [by (exp)] [compoundstatement].  Accepts cannot
1330        appear in functions!  Can specify timeouts on transaction calls.
1331        Code examples: buffer process, dining philosophers, lock manager.
1332        Section on diffs between Concurrent C and Ada.
1333   }
1334}
1335
1336@article{ConcurrentC++,
1337    keywords    = {concurrency, C++},
1338    contributer = {pabuhr@plg},
1339    author      = {N. H. Gehani and W. D. Roome},
1340    title       = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
1341    journal     = spe,
1342    month       = dec,
1343    year        = 1988,
1344    volume      = 18,
1345    number      = 12,
1346    pages       = {1157-1177}
1347}
1348
1349@article{Courtois71,
1350    keywords    = {reader and writer, p and v},
1351    contributer = {pabuhr@plg},
1352    author      = {P. J. Courtois and F. Heymans and D. L. Parnas},
1353    title       = {Concurrent Control with Readers and Writers},
1354    journal     = cacm,
1355    volume      = 14,
1356    number      = 10,
1357    month       = oct,
1358    year        = 1971,
1359    pages       = {667-668},
1360    annote      = {
1361                Many errors in the two solutions.
1362    }
1363}
1364
1365@incollection{Reppy93,
1366    keywords    = {ML, concurrency, continuation passing},
1367    contributer = {pabuhr@plg},
1368    author      = {John H. Reppy},
1369    title       = {Concurrent {ML}: Design, Application and Semantics},
1370    booktitle   = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
1371    editor      = {P. E. Lauer},
1372    pages       = {165-198},
1373    publisher   = {Springer},
1374    address     = {Berlin, DE},
1375    year        = 1993,
1376    ISBN        = {3-540-56883-2},
1377    abstract    = {
1378        Concurrent ML (CML) is a high-level language for concurrent
1379        programming. It is an extension of Standard ML (SML) and is implemented
1380        on top of Standard ML of New Jersey (SML/NJ). CML is a practical
1381        language and is being used to build real systems. It demonstrates that
1382        one need not sacrifice high-level notation in order to have good
1383        performance. CML is also a well-defined language. In the tradition of
1384        SML, it has a formal semantics and its type-soundness has been
1385        proven.},
1386    note        = {
1387        Proceedings of International Lecture Series 1991-92, McMaster
1388        UniversityLecture Notes in Computer Science 693.},
1389}
1390
1391@article{BLASE-2,
1392    keywords    = {concurrency, BLASE-2},
1393    contributer = {pabuhr@plg},
1394    author      = {Piyush Mehrotra and John Van Rosendale},
1395    title       = {Concurrent Object Access in BLASE~2},
1396    journal     = sigplan,
1397    volume      = 24,
1398    number      = 4,
1399    month       = apr,
1400    year        = 1989,
1401    pages       = {40-42},
1402    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
1403                   Sept. 26--27, 1988, San Diego, California, U.S.A},
1404}
1405
1406@techreport{Kafura88,
1407    keywords    = {objects, concurrency},
1408    contributer = {pabuhr@plg},
1409    author      = {Dennis Kafura},
1410    title       = {Concurrent Object-Oriented Real-Time Systems Research},
1411    institution = {Department of Computer Science, Virginia Polytechnic},
1412    number      = {TR 88-47},
1413    year        = 1988
1414}
1415
1416@article{Buhr92a,
1417    keywords    = {C++, concurrency, light-weight process, shared memory},
1418    contributer = {pabuhr@plg},
1419    author      = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
1420    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1421    journal     = spe,
1422    volume      = 22,
1423    number      = 2,
1424    month       = feb,
1425    year        = 1992,
1426    pages       = {137-172},
1427}
1428
1429@techreport{uC++,
1430    keywords    = {C++, concurrency, light-weight process, shared memory},
1431    contributer = {pabuhr@plg},
1432    author      = {Peter A. Buhr},
1433    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 6.1.0},
1434    institution = {School of Computer Science, University of Waterloo},
1435    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1436    month       = jul,
1437    year        = 2015,
1438    note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://\-plg.\-uwaterloo.\-ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
1439}
1440
1441@book{Burns93,
1442    keywords    = {concurrency, Pascal},
1443    contributer = {pabuhr@plg},
1444    author      = {Alan Burns and Geoff Davies},
1445    title       = {Concurrent Programming},
1446    publisher   = {Addison Wesley Longman},
1447    year        = 1993,
1448}
1449
1450@article{Hansen73a,
1451    keywords    = {monitors},
1452    contributer = {pabuhr@plg},
1453    author      = {Per {Brinch Hansen}},
1454    title       = {Concurrent Programming Concepts},
1455    journal     = spe,
1456    month       = dec,
1457    year        = 1973,
1458    volume      = 5,
1459    number      = 4,
1460    pages       = {223-245},
1461}
1462
1463@book{Lea97,
1464    keywords    = {concurrency, Java},
1465    contributer = {pabuhr@plg},
1466    author      = {Doug Lea},
1467    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1468    publisher   = {Addison-Wesley},
1469    address     = {Boston},
1470    year        = 1997,
1471    edition     = {1st},
1472}
1473
1474@book{Hartley98,
1475    keywords    = {concurrency, Java},
1476    contributer = {pabuhr@plg},
1477    author      = {Stephen J. Hartley},
1478    title       = {Concurrent Programming: The {J}ava Programming Language},
1479    publisher   = {Oxford University Press},
1480    year        = 1998,
1481    edition     = {1st},
1482}
1483
1484@book{Lea00,
1485    keywords    = {concurrency, Java},
1486    contributer = {pabuhr@plg},
1487    author      = {Doug Lea},
1488    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1489    publisher   = {Addison-Wesley},
1490    address     = {Boston},
1491    year        = 2000,
1492    edition     = {2nd},
1493}
1494
1495@book{ConcurrentC,
1496    keywords    = {concurrency, C},
1497    contributer = {pabuhr@plg},
1498    author      = {N. H. Gehani and W. D. Roome},
1499    title       = {The {Concurrent C} Programming Language},
1500    publisher   = {Silicon Press},
1501    address     = {Summit},
1502    year        = 1989,
1503}
1504
1505@book{Andrews91:book,
1506    keywords    = {concurrency},
1507    contributer = {pabuhr@plg},
1508    author      = {Gregory R. Andrews},
1509    title       = {Concurrent Programming: Principles and Practice},
1510    publisher   = {Benjamin/Cummings Publish\-ing},
1511    address     = {Redwood City},
1512    year        = 1991,
1513}
1514
1515@article{Buhr05a,
1516    keywords    = {concurrency, myths},
1517    contributer = {pabuhr@plg},
1518    author      = {Peter A. Buhr and Ashif S. Harji},
1519    title       = {Concurrent Urban Legends},
1520    journal     = ccpe,
1521    month       = aug,
1522    year        = 2005,
1523    volume      = 17,
1524    number      = 9,
1525    pages       = {1133-1172},
1526}
1527
1528@techreport{Buhr90,
1529    keywords    = {objects, concurrency},
1530    contributer = {gjditchfield@plg},
1531    author      = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke}, 
1532    title       = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1533    institution = {Department of Computer Science, University of Waterloo},
1534    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1535    number      = {CS-90-18},
1536    month       = may,
1537    year        = 1990
1538}
1539
1540@book{Burns98,
1541    keywords    = {concurrency, Ada},
1542    author      = {Alan Burns and Andy Wellings},
1543    title       = {Concurrency in {Ada}},
1544    publisher   = {Cambridge University Press},
1545    year        = 1998,
1546    edition     = {2nd},
1547}
1548
1549@book{Bernstein93,
1550    keywords    = {concurrency},
1551    author      = {Arthur J. Bernstein and Philip M. Lewis},
1552    title       = {Concurrency in Programming and Database Systems},
1553    publisher   = {Jones and Bartlett},
1554    year        = 1993,
1555}
1556
1557@inproceedings{Pitman01,
1558    keywords    = {LISP, exception handling},
1559    contributer = {pabuhr@plg},
1560    author      = {Kent M. Pitman},
1561    title       = {Condition Handling in the Lisp Language Family},
1562    booktitle   = {Exception Handling},
1563    publisher   = {Springer},
1564    volume      = 2022,
1565    series      = {LNCS},
1566    year        = 2001,
1567    pages       = {39-59}
1568}
1569
1570@inbook{enhancement,
1571    keywords    = {bounded polymorphism, Comandos},
1572    contributer = {gjditchfield@plg},
1573    author      = {Chris Horn},
1574    title       = {Conformace, Genericity, Inheritance and Enhancement},
1575    pages       = {223-233},
1576    publisher   = {Springer},
1577    year        = 1987,
1578    volume      = 276,
1579    series      = "Lecture Notes in Computer Science",
1580    note        = "ECOOP '87 European Conference on Object-Oriented Programming",
1581    summary     = {
1582        Considers effect of conformance on Meyer's conclusions in
1583        \cite{polymorphism}.
1584
1585        Implementing a swap function as a member of a type {\cd Swappable}
1586        with {\cd in out Top} parameters doesn't work, because conformance
1587        requires arguments to be of type {\cd Top}.
1588
1589        An enhancive type has a type parameter, bounded by some type, and
1590        defines members.  Types conforming to the bound can be passed as
1591        arguments to create types with the extra members.  The signature of
1592        the enhanced type is based on the signature of the argument, not the
1593        bound, as if enhancive types were macros.  Hence enhanced types do not
1594        necessarily conform to each other.  Types conforming to the bound
1595        conform to enhanced types, which allows new functions to be applied
1596        to old types.
1597
1598        Enhancive types are not generic types.  If the argument is omitted,
1599        the bound is used as a default.  Assignment of enhanced types to
1600        default-enhanced types is allowed (enhanced types conform to the
1601        default-enhanced type).  This is (probably) statically type-safe,
1602        because arguments must conform to the bound, and the new members
1603        only use operations defined for the bound.
1604
1605        With facilities for member renaming and deletion, enhancive types
1606        provide the equivalent of constrained generic types.
1607    }
1608}
1609
1610@phdthesis{Ditchfield92,
1611    keywords    = {C, parametric polymorphism, overloading},
1612    contributer = {pabuhr@plg},
1613    author      = {Glen Jeffrey Ditchfield},
1614    title       = {Contextual Polymorphism},
1615    school      = {Department of Computer Science, University of Waterloo},
1616    year        = 1992,
1617    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1618    note        = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
1619}
1620
1621@inproceedings{frameworks:HHG90,
1622    keywords    = {formal},
1623    contributer = {pabuhr@plg},
1624    author      = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
1625    title       = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
1626    booktitle   = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
1627    year        = 1990,
1628    pages       = {169-180},
1629}
1630
1631@article{Wand80,
1632    keywords    = {concurrency, continuation},
1633    contributer = {pabuhr@plg},
1634    author      = {Mitchell Wand},
1635    title       = {Continuation-Based Multiprocessing},
1636    publisher   = {The Lisp Conference},
1637    journal     = {Conference Record of the 1980 Lisp Conference},
1638    pages       = {19-28},
1639    year        = 1980,
1640}
1641
1642@article{Hieb90,
1643    keywords    = {continuations, concurrency},
1644    contributer = {pabuhr@plg},
1645    author      = {Robert Hieb and R. Kent Dybvig},
1646    title       = {Continuations and Concurrency},
1647    journal     = sigplan,
1648    volume      = 25,
1649    number      = 3,
1650    month       = mar,
1651    year        = 1990,
1652    pages       = {128-136},
1653    note        = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
1654                   March. 14--16, 1990, Seattle, Washington, U.S.A},
1655}
1656
1657@inproceedings{Haynes84,
1658    keywords    = {continuations, coroutines, Scheme},
1659    contributer = {pabuhr@plg},
1660    author      = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
1661    title       = {Continuations and Coroutines},
1662    booktitle   = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
1663    organization= {Association for Computing Machinery},
1664    month       = aug,
1665    year        = 1984,
1666    pages       = {293-298},
1667    abstract    = {
1668        The power of first class continuations is demonstrated by implementing
1669        a variety of coroutine mechanisms using only continuations and
1670        functional abstraction. The importance of general abstraction
1671        mechanisms such as continuations is discussed.},
1672}
1673
1674@inproceedings{Zahn74,
1675    keywords    = {goto, structured programming},
1676    contributer = {pabuhr@plg},
1677    author      = {C. T. Zahn},
1678    title       = {Control Statement for Natural Top-down Structured Programming},
1679    booktitle   = {Symposium on Programming Languages},
1680    address     = {Paris, France},
1681    year        = 1974,
1682}
1683
1684@unpublished{Ditchfield:conversions,
1685    contributer = {a3moss@uwaterloo.ca},
1686    author      = {Glen Ditchfield},
1687    title       = {Conversions for {Cforall}},
1688    note        = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-\textasciitilde cforall/\-Conversions/\-index.html}},
1689    month       = {Nov},
1690    year        = {2002},
1691    urldate     = {28 July 2016},
1692}
1693
1694@techreport{Dijkstra65,
1695    keywords    = {concurrency, Dekker's algorithm, semaphores},
1696    contributer = {pabuhr@plg},
1697    author      = {Edsger W. Dijkstra},
1698    title       = {Cooperating Sequential Processes},
1699    institution = {Technological University},
1700    address     = {Eindhoven, Netherlands},
1701    year        = 1965,
1702    note        = {Reprinted in \cite{Genuys68} pp. 43--112.}
1703}
1704
1705@book{Marlin80,
1706    keywords    = {coroutines},
1707    contributer = {pabuhr@plg},
1708    author      = {Christopher D. Marlin},
1709    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
1710    publisher   = {Springer},
1711    address     = {New York},
1712    year        = 1980,
1713    volume      = 95,
1714    series      = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
1715}
1716 
1717@article{Wang71,
1718    keywords    = {coroutines},
1719    contributer = {pabuhr@plg},
1720    author      = {Arne Wang and Ole-Johan Dahl},
1721    title       = {Coroutine Sequencing in a Block Structured Environment},
1722    journal     = "BIT",
1723    volume      = 11,
1724    month       = nov,
1725    year        = 1971,
1726    pages       = {425-449},
1727}
1728 
1729@article{Castagna95,
1730    keywords    = {type-systems, covariance, contravariance},
1731    contributer = {pabuhr@plg},
1732    author      = {Giuseppe Castagna},
1733    title       = {Covariance and Contravariance : Conflict without a Cause},
1734    journal     = toplas,
1735    volume      = 17,
1736    number      = 3,
1737    month       = may,
1738    year        = 1995,
1739    pages       = {341-447},
1740}
1741
1742@book{Fischer88,
1743    keywords    = {compiler construction},
1744    author      = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
1745    title       = {Crafting a Compiler},
1746    publisher   = {Benjamin Cummings},
1747    year        = 1991,
1748}
1749
1750@article{Moore75,
1751    keywords    = {approximation methods, integrated circuits},
1752    contributer = {pabuhr@plg},
1753    author      = {Gordon E. Moore},
1754    title       = {Progress in Digital Integrated Electronics},
1755    journal     = {Technical Digest, International Electron Devices Meeting, IEEE},
1756    year        = 1975,
1757    pages       = {11-13},
1758}
1759
1760@inproceedings{Jim02,
1761    keywords    = {C dialect, parametric polymorphic, safe memory allocation},
1762    contributer = {pabuhr@plg},
1763    author      = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
1764    title       = {{C}yclone: A Safe Dialect of {C}},
1765    booktitle   = {USENIX Annual Technical Conference},
1766    organization= {USENIX Association},
1767    address     = {Monterey, California, U.S.A.},
1768    month       = jun,
1769    year        = 2002,
1770    pages       = {275-288},
1771}
1772
1773% D
1774
1775@manual{D,
1776    keywords    = {D programming language},
1777    contributer = {pabuhr@plg},
1778    title       = {{D} Programming Language},
1779    author      = {Walter Bright and Andrei Alexandrescu},
1780    organization= {Digital Mars},
1781    year        = 2016,
1782    note        = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
1783}
1784
1785@techreport{Cui90,
1786    keywords    = {exception handling},
1787    contributer = {pabuhr@plg},
1788    author      = {Qian Cui},
1789    title       = {Data-Oriented Exception Handling},
1790    institution = {Department of Computer Science, University of Maryland},
1791    address     = {College Park, Maryland, U.S.A., 20742},
1792    number      = {CS-TR-2384},
1793    month       = jan,
1794    year        = 1990,
1795}
1796
1797@article{Cui92,
1798    contributer = {rkrische@plg},
1799    author      = {Qian Cui and John Gannon},
1800    title       = {Data-oriented Exception Handling},
1801    journal     = {IEEE Transactions on Software Engineering},
1802    month       = may,
1803    year        = 1992,
1804    volume      = 18,
1805    number      = 5,
1806    pages       = {393-401},
1807}
1808
1809@manual{SIMULA87,
1810    keywords    = {Simula standard},
1811    contributer = {gjditchfield@plg},
1812    title       = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
1813    organization= {Standardiseringskommissionen i Sverige},
1814    note        = {Svensk Standard SS 63 61 14},
1815    year        = 1987,
1816    abstract    = {
1817        Standard for the programming language SIMULA.  Written in English.
1818    }
1819}
1820
1821@article{Liskov75,
1822    keywords    = {abstract data types, encapsulation, verification},
1823    contributer = {gjditchfield@plg},
1824    author      = {Barbara H. Liskov},
1825    title       = {Data Types and Program Correctness},
1826    journal     = sigplan,
1827    year        = 1975,
1828    month       = jul,
1829    volume      = 10,
1830    number      = 7,
1831    pages       = {16-17},
1832    summary     = {
1833        Type definitions should contain the implementation of the type and
1834        its operations.  The grouping makes programs simpler and more
1835        understandable.  Encapsulating the definition aids verification and
1836        forces a precise specification of the interface.
1837    }
1838}
1839
1840@article{dtav,
1841    keywords    = {Russell, types},
1842    contributer = {gjditchfield@plg},
1843    author      = {James Donahue and Alan Demers},
1844    title       = {Data Types are Values},
1845    journal     = toplas,
1846    month       = jul,
1847    year        = 1985,
1848    volume      = 7,
1849    number      = 3,
1850    pages       = {426-445},
1851    comment     = {
1852        Data types are sets of operations providing interpretations of
1853        values from a meaningless, typeless universal value space.  Types
1854        and operations are also contained in this value space.
1855
1856        Functions returning types replace generic types.
1857
1858        Polymorphic functions have type parameters.  Evaluation is not
1859        macro expansion:
1860        \begin{verbatim}
1861            R == func [n:val integer; T:type[]] val integer
1862                {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
1863        \end{verbatim}
1864    }
1865}
1866
1867@article{Holt72,
1868    keywords    = {concurrency, deadlock},
1869    contributer = {pabuhr@plg},
1870    author      = {Richard C. Holt},
1871    title       = {Some Deadlock Properties of Computer Systems},
1872    journal     = acmcs,
1873    volume      = 4,
1874    number      = 3,
1875    month       = sep,
1876    year        = 1972,
1877    pages       = {179-196},
1878}
1879
1880@misc{debug-malloc,
1881    keywords    = {memory allocation debugger},
1882    contributer = {gjditchfield@plg},
1883    author      = {Conor P. Cahill},
1884    title       = {debug\_malloc},
1885    howpublished= {comp.sources.unix, volume 22, issue 112},
1886    abstract    = {
1887        This package is a collection of routines which are a drop-in
1888        replacement for the malloc(3), memory(3), string(3), and bstring(3)
1889        library functions.
1890    }
1891}
1892
1893@book{sml,
1894    keywords    = {},
1895    contributer = {pabuhr@plg},
1896    author      = {Robin Milner and Mads Tofte and Robert Harper},
1897    title       = {The Definition of Standard {ML}},
1898    publisher   = {MIT Press},
1899    address     = {Cambridge},
1900    year        = 1990
1901}
1902
1903@techreport{sml:old,
1904    keywords    = {},
1905    contributer = {gjditchfield@plg},
1906    author      = {Robert Harper and Robin Milner and Mads Tofte},
1907    title       = {The Definition of Standard {ML}, Version 2},
1908    institution = {Department of Computer Science, University of Edinburgh},
1909    year        = 1988,
1910    address     = {The King's Buildings, Edinburgh EH9 3JZ},
1911    type        = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
1912}
1913
1914@inproceedings{Reynolds72,
1915    keywords    = {continuation},
1916    contributer = {pabuhr@plg},
1917    author      = {John Reynolds},
1918    title       = {Definitional Interpreters for Higher Order Programming Languages},
1919    booktitle   = {ACM Conference Proceedings},
1920    organization= {ACM},
1921    year        = 1972,
1922    pages       = {717-740}
1923}
1924
1925@article{Buhr16,
1926    keywords    = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
1927    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
1928    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
1929    journal     = ccpe,
1930    volume      = 28,
1931    number      = 1,
1932    pages       = {144-165},
1933    month       = jan,
1934    year        = 2016,
1935}
1936
1937@misc{steelman,
1938    keywords    = {Ada},
1939    contributer = {gjditchfied@plg},
1940    author      = {High Order Language Working Group},
1941    title       = {Department of Defense Requirements for High Order Computer Programming Languages},
1942    month       = jun, year = 1978,
1943    note        = {Reprinted in \cite{pldesign}.}
1944}
1945
1946@incollection{Tsay98,
1947    keywords    = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
1948    author      = {Yih-Kuen Tsay},
1949    title       = {Deriving a scalable algorithm for mutual exclusion},
1950    booktitle   = {Distributed Computing},
1951    editor      = {Shay Kutten},
1952    volume      = {1499},
1953    series      = {LNCS},
1954    publisher   = {Springer},
1955    address     = {Berlin Heidelberg},
1956    year        = {1998},
1957    pages       = {393-407},
1958}
1959
1960@article{Conway63,
1961    keywords    = {coroutine, original},
1962    contributer = {pabuhr@plg},
1963    author      = {Melvin E. Conway},
1964    title       = {Design of a Separable Transition-Diagram Compiler},
1965    journal     = cacm,
1966    month       = jul,
1967    year        = 1963,
1968    volume      = 6,
1969    number      = 7,
1970    pages       = {396-408},
1971}
1972
1973@book{Stroustrup94,
1974    keywords    = {C++},
1975    contributor = {wyrmok@plg},
1976    author      = {Bjarne Stroustrup},
1977    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1978    publisher   = {Addison-Wesley},
1979    address     = {Boston},
1980    year        = 1994
1981}
1982
1983@inproceedings{st:concurrent,
1984    keywords    = {concurrency, Smalltalk, futures},
1985    contributer = {gjditchfield@plg},
1986    author      = {Yasuhiko Yokote and Mario Tokoro},
1987    title       = {The Design and Implementation of {ConcurrentSmalltalk}},
1988    crossref    = "OOPSLA86",
1989    pages       = {331-340},
1990    comment     = {
1991        Objects are ordinary Smalltalk objects or ``atomic'' objects, which
1992        process messages one at a time in FIFO order.  Asynchronous method
1993        calls are made by appending ``\&'' at the call site.  The sender does
1994        not wait for a reply.  If the method returns a value, it
1995        (immediately?) returns a CBox object, which is like a future.  The
1996        sender can send the ``receive'' message to the CBox, which blocks
1997        until the CBox contains a value.
1998
1999        A method can execute the ``\verb|^|'' statement to return an object
2000        and terminate, or it can execute ``\verb|^^|'' to return an object
2001        and continue execution.  If ``\verb|^^foo|'' is executed after
2002        ``\verb|^^bar|'', foo is discarded, since bar has already been
2003        returned.
2004
2005        The article does not say whether asynchronous messages can be sent
2006        to ordinary objects, or whether ordinary messages can be sent to
2007        atomic objects.
2008    }
2009}
2010
2011@inproceedings{Ichbiah83,
2012    keywords    = {Ada, packages, generics},
2013    contributer = {gjditchfield@plg},
2014    author      = {Jean D. Ichbiah},
2015    title       = {On the Design of {Ada}},
2016    booktitle   = {Information Processing 83},
2017    year        = 1983,
2018    month       = sep, pages = {1-10},
2019    editor      = {R. E. A. Mason},
2020    organization= {IFIP},
2021    publisher = {North-Holland},
2022    summary = {
2023        Packages group related declarations or subprograms, and encapsulate
2024        data types.  Separate interfaces and bodies promotes information
2025        hiding by removing the need to scan the body, allows the body to be
2026        confidential, and provides a better specification of the contract
2027        between client and implementor.  Generics are an efficient way to
2028        factor out parts of similar definitions.
2029    }
2030}
2031
2032@book{Motet96,
2033    keywords    = {Ada, exception handling},
2034    contributer = {wyrmok@plg},
2035    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
2036    title       = {Design of Dependable {A}da Software},
2037    publisher   = {Prentice-Hall},
2038    address     = {Englewood Cliffs},
2039    year        = 1996,
2040}
2041 
2042@article{Richardson93,
2043    keywords    = {C++, persistence, database},
2044    contributer = {pabuhr@plg},
2045    author      = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
2046    title       = {The Design of the {E} Programming Language},
2047    journal     = toplas,
2048    month       = jul,
2049    year        = 1993,
2050    volume      = 15,
2051    number      = 3,
2052    pages       = {494-534},
2053}
2054
2055@article{Hansen81b,
2056    keywords    = {concurrency, monitor, critical region},
2057    contributer = {pabuhr@plg},
2058    author      = {Per {Brinch Hansen}},
2059    title       = {The Design of {E}dison},
2060    journal     = spe,
2061    volume      = 11,
2062    number      = 4,
2063    month       = apr,
2064    year        = 1981,
2065    pages       = {363-396},
2066}
2067
2068@book{Gamma95,
2069    keywords    = {design patterns},
2070    author      = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
2071    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
2072    publisher   = {Addison-Wesley},
2073    address     = {Boston},
2074    year        = 1995,
2075    series      = {Professional Computing Series},
2076}
2077
2078@inproceedings{Wirth74,
2079    keywords    = {},
2080    contributer = {gjditchfield@plg},
2081    author      = {Niklaus Wirth},
2082    title       = {On the Design of Programming Languages},
2083    booktitle   = {Information Processing 74},
2084    year        = 1974,
2085    pages       = {386-393},
2086    publisher   = {North Holland Publishing Company},
2087    note        = {Reprinted in \cite{pldesign}.}
2088}
2089
2090@techreport{forceone,
2091    keywords    = {Parametric polymorphism, ForceOne},
2092    contributer = {gjditchfield@plg},
2093    author      = {Andrew K. Wright},
2094    title       = {Design of the Programming Language {ForceOne}},
2095    institution = {University of Waterloo},
2096    month       = feb, year = 1987,
2097    number      = {CS-87-10}
2098}
2099
2100@techreport{x-2,
2101    keywords    = {object based},
2102    contributer = {gjditchfield@plg},
2103    author      = {David W. Sandberg},
2104    title       = {The Design of the Programming Language {X-2}},
2105    institution = {Oregon State University},
2106    year        = 1985,
2107    address     = {Department of Computer Science, Corvallis, Oregon, 97331},
2108    number      = {85-60-1}
2109}
2110
2111@article{design,
2112    keywords    = {Smalltalk, designing classes},
2113    contributer = {gjditchfield@plg},
2114    author      = {Ralph E. Johnson and Brian Foote},
2115    title       = {Designing Reusable Classes},
2116    journal     = joop,
2117    year        = 1988,
2118    volume      = 1, number = 2, pages = {22-35},
2119    comment     = {
2120        Abstract classes represent standard protocols.  ``It is better to
2121        inherit from an abstract class than from a concrete class''.
2122        Frameworks are collections of related abstract classes.  Successful
2123        abstractions are discovered, not designed.
2124
2125        Protocols: ``If an operation X is implemented by performing a
2126        similar operation on the components of the receiver, then that
2127        operation should also be named X''.  Eliminate case analysis by
2128        creating classes with the same operations.  Create classes to
2129        represent bundles of parameters.  Shrink methods larger than 30
2130        lines.
2131
2132        Hierarchies should be deep and narrow.  Subclasses should be
2133        specializations.
2134
2135        Frameworks: split large classes.  Factor implementation differences
2136        into subcomponents.  Separate methods that do not share instance
2137        variables into components that reflect the different views of the
2138        object.  Send messages to components, not self.  Reduce implicit
2139        parameter passing through instance variables.
2140    }
2141}
2142
2143@article{dim:c++,
2144    keywords    = {Dimensional Analysis, C++},
2145    contributer = {gjditchfield@plg},
2146    author      = {Robert F. Cmelic and Narain Gehani},
2147    title       = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2148    journal     = {IEEE Software},
2149    month       = may, year = 1988,
2150    volume      = 5, number = 3, pages = {21-29}
2151}
2152
2153@article{Wegner87,
2154    contributer = {pabuhr@plg},
2155    author      = {Peter Wegner},
2156    title       = {Dimensions of Object--Based Language Design},
2157    journal     = sigplan,
2158    volume      = 22,
2159    number      = 12,
2160    month       = dec,
2161    year        = 1987,
2162    pages       = {168-182},
2163    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
2164}
2165
2166@book{Dijkstra76,
2167    keywords    = {concurrent assignment},
2168    author      = {E. W. Dijkstra},
2169    title       = {A Discipline of Programming},
2170    publisher   = {Prentice-Hall},
2171    address     = {Englewood Cliffs},
2172    year        = 1976,
2173}
2174
2175@book{Lynch96,
2176    keywords    = {distributed algorithms},
2177    author      = {Nancy A. Lynch},
2178    title       = {Distributed Algorithms},
2179    publisher   = {Morgan Kaufmann},
2180    year        = 1996,
2181}
2182
2183@book{Tanenbaum02,
2184    keywords    = {distributed programming},
2185    author      = {Andrew S. Tanenbaum and Maarten van Steen},
2186    title       = {Distributed Systems: Principles and Paradigms},
2187    publisher   = {Prentice-Hall},
2188    address     = {Englewood Cliffs},
2189    year        = 2002,
2190}
2191
2192@inproceedings{Cargill90,
2193    keywords    = {concurrency},
2194    contributer = {pabuhr@plg},
2195    author      = {Tom A. Cargill},
2196    title       = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
2197    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
2198    organization= {USENIX Association},
2199    address     = {San Francisco, California, U.S.A.},
2200    month       = apr,
2201    year        = 1990,
2202    pages       = {315-323}
2203}
2204
2205@unpublished{Duff83,
2206    keywords    = {C, switch statement, control flow},
2207    contributer = {pabuhr@plg},
2208    author      = {Tom Duff},
2209    title       = {Duff's Device},
2210    month       = nov,
2211    year        = 1983,
2212    note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
2213}
2214
2215@manual{dwarf2,
2216    keywords    = {Debugging DWARF2 specification},
2217    contributer = {rkrische@plg},
2218    title       = {DWARF Debugging Information Format},
2219    organization= {Unix International Programming Languages SIG},
2220    publisher   = {Unix International},
2221    address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
2222    year        = {1993}
2223}
2224
2225@article{classicada,
2226    keywords    = {Classic Ada},
2227    contributer = {gjditchfield@plg},
2228    author      = {Cameron M. Donaldson},
2229    title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
2230    journal     = {Journal of Pascal, {Ada} \& Modula-2},
2231    year        = 1990,
2232    month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
2233    comment     = {
2234        Classes are like packages: they can contain subprograms, types,
2235        variables, generic instantiations, and exceptions.  They can also
2236        contain class methods, instance methods, and instance variables,
2237        and define creation and initialization subprograms or methods for
2238        instances.  Single inheritance provides inheritance of
2239        implementations. Dynamic binding is done with a {\em send}
2240        statement that invokes a class or instance method.  A preprocessor
2241        converts Classic Ada to normal Ada.
2242    }
2243}
2244
2245@article{Costanza03,
2246    keywords    = {dynamic call},
2247    contributer = {pabuhr@plg},
2248    author      = {Pascal Costanza},
2249    title       = {Dynamic Scoped Functions as the Essence of {AOP}},
2250    journal     = sigplan,
2251    volume      = 38,
2252    number      = 8,
2253    month       = aug,
2254    year        = 2003,
2255    pages       = {29-35},
2256}
2257
2258% E
2259
2260@inproceedings{Wegbreit71,
2261    keywords    = {polymorphism},
2262    contributer = {pabuhr@plg},
2263    author      = {B. Wegbreit},
2264    title       = {The ECL Programming System},
2265    booktitle   = {Proceedings of AFIPS 1971 FJCC},
2266    publisher   = {AFIPS Press, vol. 39},
2267    address     = {Montvale, New Jersey, U.S.A},
2268    year        = 1971,
2269    pages       = {253-262},
2270}
2271
2272@manual{JavaScript,
2273    keywords    = {JavaScript},
2274    contributer = {pabuhr},
2275    title       = {ECMAScript 2015 Language Specification {JavaScript}},
2276    organization= {ECAM International},
2277    address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
2278    month       = jun,
2279    year        = 2015,
2280    note        = {6th Edition}
2281}
2282
2283@inproceedings{Peterson77,
2284    keywords    = {N-thread software-solution mutual exclusion},
2285    contributer = {pabuhr@plg},
2286    author      = {Gary L. Peterson and Michael J. Fischer},
2287    title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
2288    booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
2289    series      = {STOC '77},
2290    year        = 1977,
2291    location    = {Boulder, Colorado, USA},
2292    pages       = {91--97},
2293    numpages    = {7},
2294    publisher   = {ACM},
2295    address     = {New York, NY, USA},
2296}
2297
2298@article{Hansen81a,
2299    keywords    = {concurrency, monitor, critical region},
2300    contributer = {pabuhr@plg},
2301    author      = {Per {Brinch Hansen}},
2302    title       = {{E}dison---a Multiprocessor Language},
2303    journal     = spe,
2304    volume      = 11,
2305    number      = 4,
2306    month       = apr,
2307    year        = {1981},
2308    pages       = {325-361},
2309}
2310
2311@book{Eiffel,
2312    keywords    = {Eiffel},
2313    contributer = {pabuhr@plg},
2314    author      = {Bertrand Meyer},
2315    title       = {Eiffel: The Language},
2316    publisher   = {Prentice-Hall},
2317    address     = {Englewood Cliffs},
2318    year        = 1992,
2319    series      = {Prentice-Hall Object-Oriented Series},
2320}
2321
2322@article{WS:overload,
2323    keywords    = {compilation},
2324    contributer = {gjditchfield@plg},
2325    author      = {Peter J. L. Wallis and Bernhard W. Silverman},
2326    title       = {Efficient Implementation of the {Ada} Overloading Rules},
2327    journal     = ipl,
2328    year        = 1980,
2329    month       = apr, volume = 10, number = 3, pages = {120-123},
2330    comment     = {
2331        The ``two-pass'' algorithm.  An upward pass over a parse tree
2332        calculates the set of possible result types of operators.  The
2333        root must have exactly one type, produced in one way.  A
2334        downward pass selects the version of the operator that produces the
2335        desired result type, thus setting the result types of subtrees.
2336        See \cite{D:overload}.
2337    }
2338}
2339
2340@techreport{Habermann80,
2341    keywords    = {Ada, threads},
2342    contributer = {pabuhr@plg},
2343    author      = {A. N. Habermann and I. R. Nassi},
2344    title       = {Efficient Implementation of {Ada} Tasks},
2345    institution = {Carnegie-Mellon University},
2346    number      = {CMU-CS-80-103},
2347    year        = 1980
2348}
2349
2350@article{Emerald,
2351    keywords    = {concurrency, polymorphism},
2352    contributer = {pabuhr@plg},
2353    author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
2354    title       = {Emerald: A General-Purpose Programming Language},
2355    journal     = spe,
2356    month       = jan,
2357    year        = 1991,
2358    volume      = 21,
2359    number      = 1,
2360    pages       = {91-118}
2361}
2362
2363@InProceedings{chambers89a,
2364    keywords    = {maps, delegation},
2365    author      = "Craig Chambers and David Ungar and Elgin Lee",
2366    title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
2367                 Object-Oriented Language Based on Prototypes",
2368    crossref    = "OOPSLA89",
2369    pages       = {49-70}
2370}
2371
2372@article{oop:encapsulation,
2373    keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
2374    contributer = {gjditchfield@plg},
2375    author      = {Alan Snyder},
2376    title       = {Encapsulation and Inheritance in Object-Oriented Programming
2377        Languages},
2378    journal     = sigplan,
2379    volume      = {21},    number = {11},
2380    pages       = {38-45},
2381    month       = nov, year = 1986,
2382    comment     = {
2383        Client, child interfaces should be distinct.  Child interface
2384        shouldn't grant total access to parent.
2385
2386        Rules for redefining parent variable name in a child affect
2387        re-implementation of the parent.
2388
2389        Inheritance can be a promise to obey the semantics of the parent,
2390        or code reuse; the two may be contradictory.  Unification
2391        exposes use of inheritance: a child can not be re-implemented
2392        without breaking code that assumes that it is a subclass of the
2393        original parent.  If a class uses the names of its parents'
2394        ancestors, then inheritance is part of the parent's child
2395        interface.
2396
2397        Linearizing a multiple inheritance tree means that a class's use of
2398        calls on super need to be understood before it is used as a parent.
2399        Merging repeated ancestors exposes inheritance if an ancestor is
2400        re-implemented.  Forbidding inheritance of distinct methods with
2401        the same name exposes implementation of ancestors.  Proposed
2402        solution treats the set of ancestors as a tree.
2403    }
2404}
2405
2406@article{st:encapsulator,
2407    keywords    = {encapsulator, Smalltalk, monitor},
2408    contributer = {gjditchfield@plg},
2409    author      = {Geoffrey A. Pascoe},
2410    title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
2411    journal     = sigplan,
2412    volume      = {21},    number       = {11},
2413    pages       = {341-346},
2414    month       = nov, year = 1986,
2415    comment     = {
2416        Encapsulators are objects that surround other objects.
2417        Pre- and post-actions are performed when messages are sent to the
2418        encapsulated object.  They are created here by sending the message
2419        object: to an encapsulator class.  Examples given are monitors,
2420        atomic objects, and Model (for model-view-controller interfaces).
2421
2422        Encapsulator classes use a family of selectors that the
2423        encapsulated object will not respond to.  Messages for the
2424        encapsulated object are passed on by trapping them with the
2425        doesNotUnderstand method.  Various fiddles were needed when setting
2426        up the class and metaclass hierarchies.  A few selectors (==,
2427        class) always directly invoke primitive methods; they can't be
2428        used.
2429
2430        Can an encapsulated object be an encapsulator?  Probably, but the
2431        middle object's selectors are inaccessible.
2432    }
2433}
2434
2435@manual{EPT,
2436    keywords    = {concurrency, light-weight threads},
2437    contributer = {pabuhr@plg},
2438    key         = {Encore},
2439    title       = {Encore Parallel Thread Manual, 724-06210},
2440    organization= {Encore Computer Corporation},
2441    month       = may,
2442    year        = 1988,
2443}
2444
2445@manual{Erlang,
2446    keywords    = {Erlang},
2447    contributer = {pabuhr},
2448    title       = {Erlang Reference Manual User's Guide, Vertion 7.0},
2449    organization= {Erlang/OTP System Documentation},
2450    address     = {1430 Broadway, New York, New York  10018},
2451    month       = jun,
2452    year        = 2015,
2453    note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-\-documentation.pdf}}},
2454}
2455
2456@inproceedings{MH88,
2457    keywords    = {modules, general sums, general products},
2458    contributer = {gjditchfield@plg},
2459    author      = {John C. Mitchell and Robert Harper},
2460    title       = {The Essence of {ML}},
2461    booktitle   = popl,
2462    year        = 1988,
2463    pages       = {28-46}
2464}
2465
2466@book{LeVerrand,
2467    keywords    = {},
2468    author      = {D. Le Verrand},
2469    title       = {Evaluating {Ada}},
2470    publisher   = {North Oxford Academic},
2471    year        = 1985
2472}
2473
2474@inproceedings{Bloom79,
2475    keywords    = {concurrency},
2476    contributer = {pabuhr@plg},
2477    author      = {Toby Bloom},
2478    title       = {Evaluating Synchronization Mechanisms},
2479    booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
2480    organization= {ACM SIGOPS},
2481    address     = {Pacific Grove, California, U.S.A},
2482    month       = dec,
2483    year        = 1979,
2484    pages       = {24-32}
2485}
2486
2487@article{Buhr06a,
2488    keywords    = {concurrency, C++, uC++},
2489    contributer = {pabuhr@plg},
2490    author      = {Peter A. Buhr and Richard C. Bilson},
2491    title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
2492                   High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2493    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2494    month       = feb,
2495    year        = 2006,
2496    volume      = 31,
2497    number      = 2,
2498    pages       = {36-40},
2499}
2500
2501@article{ExceptionalC,
2502    keywords    = {exception handling, asynchronous events},
2503    contributer = {wyrmok@plg},
2504    author      = {N. H. Gehani},
2505    title       = {Exceptional {C} or {C} with Exceptions},
2506    journal     = spe,
2507    year        = 1992,
2508    month       = oct,
2509    volume      = 22,
2510    number      = 10,
2511    pages       = {827-848},
2512    comment     = {
2513        It is the most extensive exceptional handling mechanism thus
2514        far. Though it doesn't have Mesa resumption, it has
2515        asynchronous signal which is more general and abstract than
2516        the unix signal mechanism.  It has an Eiffel like retry
2517        mechanism. Consequently, the scope of guarded region is not
2518        immediately terminated when an exception is raised. In fact,
2519        an exception handler creates a scope under its guarded
2520        region.
2521        }
2522}
2523
2524@incollection{Buhr02,
2525    keywords    = {exception handling},
2526    contributer = {pabuhr@plg},
2527    author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
2528    title       = {Exception Handling},
2529    editor      = {Marvin V. Zelkowitz},
2530    booktitle   = {Advances in COMPUTERS},
2531    publisher   = {Academic Press},
2532    address     = {London},
2533    volume      = 56,
2534    year        = 2002,
2535    pages       = {245-303},
2536}
2537
2538@article{Cargill94,
2539    keywords    = {exception handling},
2540    contributer = {pabuhr@plg},
2541    author      = {Tom Cargill},
2542    title       = {Exception Handling: a False Sense of Security},
2543    journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
2544    year        = 1994,
2545    month       = nov,
2546    volume      = 6,
2547    number      = 9,
2548    note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
2549}
2550
2551@article{Knudsen84,
2552    keywords    = {static exception handling, BETA, sequel},
2553    contributer = {wyrmok@plg},
2554    author      = {J{\o}rgen Lindskov Knudsen},
2555    title       = {Exception Handling --- A Static Approach},
2556    journal     = spe,
2557    year        = 1984,
2558    month       = may,
2559    volume      = 14,
2560    number      = 5,
2561    pages       = {429-449},
2562}
2563
2564@article{Drew94,
2565    keywords    = {exceptions, exception handling},
2566    contributer = {wyrmok@plg},
2567    author      = {Steven J. Drew and K. John Gough},
2568    title       = {Exception Handling: Expecting the Unexpected},
2569    journal     = {Computer Languages},
2570    year        = 1994,
2571    month       = may,
2572    volume      = 20,
2573    number      = 2,
2574    comment     = {
2575        A recent and good survey on various exception handling mechanisms found
2576        in imperative programming languages. It classifies various mechanism in
2577        terms of flow control and scopes. Asynchronous exceptions and signals
2578        are also covered as Exceptional C is in the survey.
2579        }
2580}
2581
2582@article{Koenig90,
2583    keywords    = {exception handling},
2584    contributer = {pabuhr@plg},
2585    author      = {Andrew Koenig and Bjarne Stroustrup},
2586    title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2587    journal     = joop,
2588    month       = {July/August},
2589    year        = 1990,
2590    volume      = 3,
2591    number      = 2,
2592    pages       = {16-33},
2593}
2594
2595@article{Lee83,
2596    keywords    = {exception handling, C},
2597    contributer = {pabuhr@plg},
2598    author      = {P. A. Lee},
2599    title       = {Exception Handling in {C} Programs},
2600    journal     = spe,
2601    volume      = 13,
2602    number      = 5,
2603    month       = may,
2604    year        = 1983,
2605    pages       = {389-405},
2606}
2607
2608@article{Liskov79,
2609    keywords    = {exception handling},
2610    contributer = {pabuhr@plg},
2611    author      = {Barbara H. Liskov and Alan Snyder},
2612    title       = {Exception Handling in {CLU}},
2613    journal     = ieeese,
2614    month       = nov,
2615    year        = 1979,
2616    volume      = {SE-5},
2617    number      = 6,
2618    pages       = {546-558},
2619}
2620
2621@article{Szalas85,
2622    keywords    = {concurrency, C++},
2623    contributer = {pabuhr@plg},
2624    author      = {Andrzej Szalas and Danuta Szczepanska},
2625    title       = {Exception Handling in Parallel Computations},
2626    journal     = sigplan,
2627    publisher   = {ACM},
2628    address     = {New York, NY, USA},
2629    volume      = 20,
2630    number      = 10,
2631    month       = oct,
2632    year        = 1985,
2633    pages       = {95-104},
2634}
2635
2636@article{MacLaren77,
2637    keywords    = {exception handling, PL/I},
2638    contributer = {pabuhr@plg},
2639    author      = {M. Donald MacLaren},
2640    title       = {Exception Handling in {PL/I}},
2641    journal     = sigplan,
2642    volume      = 12,
2643    number      = 3,
2644    month       = mar,
2645    year        = 1977,
2646    pages       = {101-104},
2647    note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
2648                   March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
2649}
2650
2651@article{Goodenough75,
2652    keywords    = {exception handling},
2653    contributer = {pabuhr@plg},
2654    author      = {J. B. Goodenough},
2655    title       = {Exception Handling: Issues and a Proposed Notation},
2656    journal     = cacm,
2657    month       = dec,
2658    year        = 1975,
2659    volume      = 18,
2660    number      = 12,
2661    pages       = {683-696},
2662}
2663
2664@article{Lampson80,
2665    keywords    = {monitors},
2666    contributer = {pabuhr@plg},
2667    author      = {B. W. Lampson and D. D. Redell},
2668    title       = {Experience with Processes and Monitors in Mesa},
2669    journal     = cacm,
2670    volume      = 23,
2671    number      = 2,
2672    month       = feb,
2673    year        = 1980,
2674    pages       = {105-117},
2675}
2676
2677@inproceedings{Shopiro87,
2678    keywords    = {concurrency},
2679    contributer = {pabuhr@plg},
2680    author      = {Jonathan E. Shopiro},
2681    title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
2682    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
2683    organization= {USENIX Association},
2684    address     = {Santa Fe, New Mexico, U.S.A},
2685    month       = nov,
2686    year        = 1987,
2687    pages       = {77-94}
2688}
2689
2690@article{Modula-2+,
2691    keywords    = {Modula-2, exceptions, garbage collection, concurrency},
2692    contributer = {gjditchfield@plg},
2693    author      = {Paul Rovner},
2694    title       = {Extending Modula-2 to Build Large, Integrated Systems},
2695    journal     = {IEEE Software},
2696    month       = nov, year = 1986,
2697    volume      = 3, number = 6, pages = {46-57},
2698    comment     = {
2699        Exceptions can have a parameter.  Procedures can declare the
2700        exceptions they can propagate; others are converted to {\tt
2701        SYSTEM.Fail}.  If they don't, all exceptions propagate.
2702        Block cleanup statements execute no matter how control leaves the
2703        block.
2704
2705        {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
2706        assigned any {\tt REF t}.  Open array types can be used in
2707        parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
2708        dynamically determined size.
2709
2710        The {\tt THREAD} module provides lightweight processes, semaphores,
2711        and conditions.  A statement {\tt LOCK {\em semaphore} DO
2712        {\em statements} END} is built in.
2713
2714        {\tt SAFE} modules do run-time checks, and only import {\tt
2715        SAFE} modules.  One implementation module can implement several
2716        definition modules.  Opaque type implementations can be
2717        repeated in modules that import its definition, so implementation
2718        modules can collaborate.  The linker checks that all
2719        implementations are the same.
2720    }
2721}
2722
2723@inproceedings{BNRPascal,
2724    keywords    = {concurrency, rendezvous},
2725    contributer = {pabuhr@plg},
2726    author      = {R. Kamel and N. Gammage},
2727    title       = {Experience with Rendezvous},
2728    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
2729    month       = oct,
2730    year        = 1988,
2731    pages       = {143-149}
2732}
2733
2734% F
2735
2736@inproceedings{Knudsen01,
2737    keywords    = {Beta, exception handling},
2738    contributer = {pabuhr@plg},
2739    author      = {J{\o}rgen Lindskov Knudsen},
2740    title       = {Fault Tolerance and Exception Handling in {BETA}},
2741    booktitle   = {Exception Handling},
2742    publisher   = {Springer},
2743    volume      = 2022,
2744    series      = {Lecture Notes in Computer Science},
2745    year        = 2001,
2746    pages       = {1-17}
2747}
2748
2749@article{Lamport87,
2750    keywords    = {software solutions, mutual exclusion, fast},
2751    contributer = {pabuhr@plg},
2752    author      = {Leslie Lamport},
2753    title       = {A Fast Mutual Exclusion Algorithm},
2754    journal     = tocs,
2755    volume      = 5,
2756    number      = 1,
2757    month       = jan,
2758    year        = {1987},
2759    pages       = {1--11},
2760    publisher   = {ACM},
2761    address     = {New York, NY, USA},
2762}
2763
2764@inproceedings{F-bound,
2765    keywords    = {},
2766    contributer = {gjditchfield@plg},
2767    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
2768    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
2769    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
2770    year        = 1989,
2771    month       = sep,
2772    pages       = {273-280}
2773}
2774
2775@mastersthesis{Wasik08,
2776    author      = {Ayelet Wasik},
2777    title       = {Features of a Multi-Threaded Memory Allocator},
2778    school      = {University of Waterloo},
2779    year        = 2008,
2780    month       = jan,
2781    address     = {Waterloo, Ontario, Canada, N2L 3G1},
2782    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
2783}
2784
2785@article{Holzmann94,
2786    keywords    = {semaphore, flags},
2787    contributer = {pabuhr@plg},
2788    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
2789    title       = {The First Data Networks},
2790    journal     = {Scientific American},
2791    month       = jan,
2792    year        = 1994,
2793    volume      = 12,
2794    number      = 1,
2795    pages       = {124-129},
2796}
2797
2798@article{Bohm66,
2799    keywords    = {goto, structured programming},
2800    contributer = {pabuhr@plg},
2801    author      = {C. B\"{o}hm and G. Jacopini},
2802    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
2803    journal     = cacm,
2804    month       = may,
2805    year        = 1966,
2806    volume      = 9,
2807    number      = 5,
2808    pages       = {366-371},
2809}
2810
2811@manual{Fortran95,
2812    keywords    = {Fortran 95},
2813    contributer = {pabuhr@plg},
2814    key         = {Fortran95},
2815    title       = {Fortran 95 Standard, ISO/IEC 1539},
2816    organization = {Unicomp, Inc.},
2817    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
2818    month       = jan,
2819    year        = 1997,
2820}
2821
2822@manual{Fortran08,
2823    keywords    = {ISO/IEC Fortran 08},
2824    contributer = {pabuhr@plg},
2825    key         = {Fortran08},
2826    title       = {Programming Languages -- {Fortran} Part 1},
2827    organization= {International Standard ISO/IEC 1989:2014},
2828    publisher   = {International Standard Organization},
2829    address     = {http://www.iso.org},
2830    year        = 2010,
2831}
2832
2833@book{Andrews00:book,
2834    keywords    = {concurrency},
2835    contributer = {pabuhr@plg},
2836    author      = {Gregory R. Andrews},
2837    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
2838    publisher   = {Addison--Wesley},
2839    year        = 2000,
2840}
2841
2842@article{Agha89,
2843    keywords    = {actors, concurrency},
2844    contributer = {pabuhr@plg},
2845    author      = {Gul A. Agha},
2846    title       = {Foundational Issues in Concurrent Computing},
2847    journal     = sigplan,
2848    month       = apr,
2849    year        = 1989,
2850    volume      = 24,
2851    number      = 4,
2852    pages       = {60-65},
2853    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
2854                   Sept. 26--27, 1988, San Diego, California, U.S.A},
2855}
2856
2857@article{ool,
2858    keywords    = {},
2859    contributer = {gjditchfield@plg},
2860    author      = {Douglas T. Ross},
2861    title       = {Toward Foundations for the Understanding of Type},
2862    journal     = sigplan,
2863    year        = 1976,
2864    volume      = 11, pages = {63-65},
2865    note        = {Conference on Data: Abstraction, Definition and Structure},
2866    summary     = {
2867        Possibly the first use (without definition, alas) of the phrase
2868        "object oriented language".  Metaphysical to the point of incoherence.
2869    }
2870}
2871
2872@article{frames,
2873    keywords    = {frames},
2874    contributer = {gjditchfield@plg},
2875    author      = {Paul G. Basset},
2876    title       = {Frame-Based Software Engineering},
2877    journal     = {IEEE Software},
2878    month       = jul, year = 1987,
2879    volume      = 4, number = 4, pages = {9-16}
2880}
2881
2882@article{Sutter05,
2883    keywords    = {concurrency, C++},
2884    contributer = {pabuhr@plg},
2885    author      = {Herb Sutter},
2886    title       = {A Fundamental Turn Toward Concurrency in Software},
2887    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2888    month       = mar,
2889    year        = 2005,
2890    volume      = 30,
2891    number      = 3,
2892    pages       = {16-22},
2893}
2894
2895@inproceedings{Dony01,
2896    keywords    = {Smalltalk, exception handling},
2897    contributer = {pabuhr@plg},
2898    author      = {Chistophe Dony},
2899    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
2900    booktitle   = {Exception Handling},
2901    publisher   = {Springer},
2902    volume      = 2022,
2903    series      = {Lecture Notes in Computer Science},
2904    year        = 2001,
2905    pages       = {18-38}
2906}
2907
2908@misc{FW,
2909    key         = {FW},
2910    contributer = {gjditchfield@plg},
2911    title       = {Funk \& Wagnalls Standard Desk Dictionary},
2912    year        = 1980
2913}
2914
2915@book{Knuth73V1,
2916    contributer = {pabuhr@plg},
2917    author      = {Donald E. Knuth},
2918    title       = {Fundamental Algorithms},
2919    series      = {The Art of Computer Programming},
2920    publisher   = {Addison-Wesley},
2921    address     = {Boston},
2922    year        = 1973,
2923    volume      = 1,
2924    edition     = {2nd},
2925}
2926
2927@inproceedings{Strachey,
2928    keywords    = {polymorphism},
2929    contributer = {gjditchfield@plg},
2930    author      = {C. Strachey},
2931    title       = {Fundamental Concepts in Programming Languages},
2932    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
2933    year        = 1967,
2934    month       = aug,
2935    address     = {Copenhagen},
2936    comment     = {
2937        Defines ad-hoc and parametric polymorphism.
2938    }
2939}
2940
2941@article{Eisenberg72,
2942    keywords    = {concurrency, N-Process solution, O(N)},
2943    contributer = {pabuhr@plg},
2944    author      = {Murray A. Eisenberg and Michael R. McGuire},
2945    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
2946    journal     = cacm,
2947    month       = nov,
2948    year        = 1972,
2949    volume      = 15,
2950    number      = 11,
2951    pages       = {999},
2952}
2953
2954% G
2955
2956@article{Boehm88,
2957    keywords    = {conservative garbage collection, C},
2958    contributer = {gjditchfield@plg},
2959    author      = {Hans-Juergen Boehm and Mark Weiser},
2960    title       = {Garbage Collection in an Uncooperative Environment},
2961    journal     = spe,
2962    month       = sep,
2963    year        = 1988,
2964    volume      = 18,
2965    number      = 9,
2966    pages       = {807-820}
2967}
2968
2969@manual{gcc,
2970    keywords    = {},
2971    contributer = {gjditchfield@plg},
2972    title       = {GCC},
2973    author      = {Richard M. Stallman},
2974    organization= {Free Software Foundation},
2975    address     = {Cambridge}
2976}
2977
2978@article{doUpon,
2979    keywords    = {formal verification, axiomatic semantics, control structures},
2980    contributer = {gjditchfield@plg},
2981    author      = {Ed Anson},
2982    title       = {A Generalized Iterative Construct and Its Semantics},
2983    journal     = toplas,
2984    volume      = {9},    number = {4},
2985    pages       = {567-581},
2986    month       = oct, year = 1987,
2987    comment     = {
2988        \begin{verbatim}
2989            do
2990                   P1 -> L1
2991               [] P2 -> L2
2992            ...
2993               [] Pm -> Lm
2994            upon
2995                   Q1 -> M1
2996               [] Q2 -> M2
2997            ...
2998               [] qn -> mn
2999            od
3000        \end{verbatim}
3001
3002        If there is an i such that Qi is true, execute Mi and terminate.
3003        Otherwise, if there is an i such that Pi is true, execute Li and
3004        repeat the loop.  Otherwise, fail.
3005    }
3006}
3007
3008@unpublished{Bilson,
3009    keywords    = {generic programming, generics, polymorphism},
3010    contributor = {a3moss@plg},
3011    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3012    title       = {Generic Programming with Inferred Models},
3013}
3014
3015@article{Haskell,
3016    keywords    = {lazy evaluation, type class},
3017    contributer = {pabuhr},
3018    author      = {Paul Hudak and Joseph H. Fasel},
3019    title       = {A Gentle Introduction to Haskell},
3020    journal     = sigplan,
3021    volume      = 27,
3022    number      = 5,
3023    month       = may,
3024    year        = 1992,
3025    pages       = {T1-53},
3026}
3027
3028@manual{Go,
3029    keywords    = {Go programming language},
3030    contributer = {pabuhr@plg},
3031    title       = {{Go} Programming Language},
3032    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
3033    organization= {Google},
3034    year        = 2009,
3035    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3036}
3037
3038@article{Dijkstra68a,
3039    keywords    = {goto},
3040    contributer = {pabuhr@plg},
3041    author      = {Edsger W. Dijkstra},
3042    title       = {Go To Statement Considered Harmful},
3043    journal     = cacm,
3044    month       = mar,
3045    year        = 1968,
3046    volume      = 11,
3047    number      = 3,
3048    pages       = {147-148},
3049    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3050}
3051
3052@article{Choi91,
3053    keywords    = {contra-variance, functions},
3054    contributer = {pabuhr@plg},
3055    author      = {Injun Choi and Michael V. Mannino},
3056    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3057    journal     = {OOPS Messenger},
3058    volume      = 2,
3059    number      = 1,
3060    month       = jan,
3061    year        = 1991,
3062    pages       = {38-54},
3063}
3064
3065@misc{GNU-C,
3066    keywords    = {C, ANSI C},
3067    contributer = {pabuhr@plg},
3068    author      = {Richard Stallman},
3069    title       = {The Free Software Foundation's Gnu {C} Compiler},
3070    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3071    year        = 1989,
3072}
3073
3074@article{Dijkstra:green,
3075    keywords    = {ada},
3076    contributer = {gjditchfield@plg},
3077    author      = {Edsger W. Dijkstra},
3078    title       = {On the GREEN Language submitted to the DoD},
3079    journal     = sigplan,
3080    year        = 1978,
3081    month       = oct,
3082    volume      = 13,
3083    number      = 10,
3084    pages       = {16-21}
3085}
3086
3087@inproceedings{Miller02,
3088    keywords    = {exception handling},
3089    contributer = {pabuhr@plg},
3090    author      = {Robert Miller and Anand Tripathi},
3091    title       = {The Guardian Model for Exception Handling in Distributed Systems},
3092    booktitle   = {21st Symposium on Reliable Distributed Systems},
3093    organization= {IEEE},
3094    address     = {Suita, Japan},
3095    year        = 2002,
3096    month       = oct,
3097    pages       = {304-313}
3098}
3099
3100@phdthesis{Chen09,
3101    author      = {Jun Chen},
3102    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
3103    school      = {University of Waterloo},
3104    year        = 2009,
3105    month       = sep,
3106    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3107    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3108}
3109
3110@misc{GNU-C++,
3111    keywords    = {C++, GNU C},
3112    contributer = {pabuhr@plg},
3113    author      = {Michael D. Tiemann},
3114    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3115    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3116    month       = mar,
3117    year        = 1990,
3118}
3119
3120% H
3121
3122@article{Michael04a,
3123    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3124    author      = {Maged M. Michael},
3125    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3126    journal     = ieeepds,
3127    volume      = 15,
3128    number      = 6,
3129    month       = jun,
3130    year        = 2004,
3131    pages       = {491-504},
3132    publisher   = {IEEE Press},
3133    address     = {Piscataway, NJ, USA},
3134}
3135
3136@techreport{Hermes90,
3137    keywords    = {processes, distributed computing},
3138    contributer = {pabuhr@plg},
3139    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3140    title       = {Hermes: A Language for Distributed Computing},
3141    institution = {IBM T. J. Watson Research Center},
3142    address     = {Yorktown Heights, New York, U.S.A., 10598},
3143    month       = oct,
3144    year        = 1990,
3145}
3146
3147@book{Hermes91,
3148    keywords    = {processes, distributed computing},
3149    contributer = {pabuhr@plg},
3150    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3151    title       = {Hermes: A Language for Distributed Computing},
3152    publisher   = {Prentice-Hall},
3153    address     = {Englewood Cliffs},
3154    series      = {Innovative Technology},
3155    year        = 1991,
3156}
3157
3158@article{katzenelson83b,
3159    contributer = {gjditchfield@plg},
3160    author      = "Jacob Katzenelsen",
3161    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3162    journal     = spe,
3163    year        = 1983,
3164    volume      = 13,
3165    number      = 7,
3166    pages       = {577-596},
3167    month       = jul
3168}
3169
3170@techreport{Hoare73,
3171    keywords    = {},
3172    contributer = {gjditchfield@plg},
3173    author      = {C. A. R. Hoare},
3174    title       = {Hints on Programming Language Design},
3175    institution = {Stanford University Computer Science Department},
3176    year        = 1973,
3177    month       = dec,
3178    number      = {CS-73-403},
3179    note        = {Reprinted in \cite{pldesign}.}
3180}
3181
3182@article{Dijkstra71,
3183    keywords    = {monitor, secretary},
3184    contributer = {pabuhr@plg},
3185    author      = {E. W. Dijkstra},
3186    title       = {Hierarchical Ordering of Sequential Processes},
3187    journal     = acta,
3188    volume      = 1,
3189    pages       = {115-138},
3190    year        = 1971,
3191}
3192
3193@article{Buhr15a,
3194    keywords    = {software solution, mutual exclusion, performance experiment},
3195    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3196    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3197    journal     = ccpe,
3198    volume      = 27,
3199    number      = 3,
3200    pages       = {651-701},
3201    month       = mar,
3202    year        = 2015,
3203}
3204
3205@article{Ackermann28,
3206    keywords    = {recursion, Ackermann function},
3207    contributer = {pabuhr@plg},
3208    author      = {Wilhelm Ackermann},
3209    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
3210    publisher   = {Springer},
3211    journal     = mathann,
3212    number      = 1,
3213    volume      = 99,
3214    pages       = {118-133},
3215    month       = dec,
3216    year        = 1928,
3217}
3218
3219@inproceedings{typeclass,
3220    keywords    = {Hindley/Miller type systems, Haskell},
3221    contributer = {gjditchfield@plg},
3222    author      = {Philip Wadler and Stephen Blott},
3223    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3224    booktitle   = popl,
3225    year        = 1989,
3226    pages       = {60-76},
3227    organization= {Association for Computing Machinery}
3228}
3229
3230% I
3231
3232@book{IBM370,
3233    keywords    = {370, IBM},
3234    contributer = {pabuhr@plg},
3235    key         = {IBM370},
3236    title       = {{IBM} System/370 Principles of Operation},
3237    publisher   = {IBM},
3238    number      = {GA22-7000-8},
3239    month       = oct,
3240    year        = 1981,
3241    edition     = {9th}
3242}
3243
3244@book{Icon,
3245    keywords    = {Icon},
3246    contributer = {pabuhr@plg},
3247    author      = {Ralph E. Griswold and Madge T. Griswold},
3248    title       = {The Icon Programming Language},
3249    publisher   = {Prentice-Hall},
3250    address     = {Englewood Cliffs},
3251    year        = 1983,
3252}
3253
3254@inproceedings{Valois94,
3255    keywords    = {lock free, queue},
3256    contributer = {pabuhr@plg},
3257    author      = {John D. Valois},
3258    title       = {Implementing Lock-Free Queues},
3259    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
3260    address     = {Las Vegas, Nevada, U.S.A.},
3261    year        = {1994},
3262    pages       = {64-69},
3263}
3264
3265@article{Hehner81,
3266    keywords    = {concurrency, critical section, bakery algorithm},
3267    contributer = {pabuhr@plg},
3268    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
3269    title       = {An Implementation of {P} and {V}},
3270    journal     = ipl,
3271    year        = 1981,
3272    month       = aug,
3273    volume      = 12,
3274    number      = 4,
3275    pages       = {196-198},
3276}
3277
3278@incollection{Steenkiste91,
3279    keywords    = {lisp},
3280    contributer = {gjditchfield@plg},
3281    author      = {Peter A. Steenkiste},
3282    title       = {The Implementation of Tags and Run-Time Checking},
3283    booktitle   = {Topics in Advanced Language Implementation},
3284    pages       = {3-24},
3285    year        = 1991,
3286    editor      = {Peter Lee},
3287    chapter     = {1},
3288    publisher   = {The MIT Press}
3289}
3290
3291@techreport{Roberts89,
3292    keywords    = {},
3293    contributer = {pabuhr@plg},
3294    author      = {Eric S. Roberts},
3295    title       = {Implementing Exceptions in {C}},
3296    institution = {Digital Systems Research Center},
3297    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3298    number      = {40},
3299    month       = mar,
3300    year        = 1989,
3301}
3302
3303@mastersthesis{Bilson03,
3304    keywords    = {Cforall, parametric polymorphism, overloading},
3305    contributer = {pabuhr@plg},
3306    author      = {Richard C. Bilson},
3307    title       = {Implementing Overloading and Polymorphism in Cforall},
3308    school      = {School of Computer Science, University of Waterloo},
3309    year        = 2003,
3310    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3311    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3312}
3313
3314@article{Buhr05b,
3315    keywords    = {monitor, automatic signal, implicit signal},
3316    contributer = {pabuhr@plg},
3317    author      = {Peter A. Buhr and Ashif S. Harji},
3318    title       = {Implicit-signal monitors},
3319    journal     = toplas,
3320    volume      = 27,
3321    number      = 6,
3322    month       = nov,
3323    year        = 2005,
3324    issn        = {0164-0925},
3325    pages       = {1270--1343},
3326    publisher   = {ACM Press},
3327    address     = {New York, NY, USA},
3328}
3329
3330@article{Baker77,
3331    author      = {Henry C. Baker, Jr. and Carl Hewitt},
3332    title       = {The Incremental Garbage Collection of Processes},
3333    journal     = {SIGART Bulletin},
3334    publisher   = {ACM},
3335    address     = {New York, NY, USA},
3336    month       = aug,
3337    year        = 1977,
3338    pages       = {55-59},
3339    issn        = {0163-5719},
3340}
3341
3342@book{Algol68,
3343    keywords    = {Algol68},
3344    contributer = {pabuhr@plg},
3345    author      = {C. H. Lindsey and S. G. van der Meulen},
3346    title       = {Informal Introduction to ALGOL 68},
3347    publisher   = {North-Holland},
3348    address     = {London},
3349    year        = 1977,
3350}
3351
3352@inproceedings{Cook90,
3353    keywords    = {f-bounded polymorhpism, lambda calculus},
3354    contributer = {gjditchfield@plg},
3355    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
3356    title       = {Inheritance is Not Subtyping},
3357    booktitle   = popl,
3358    year        = 1990,
3359    pages       = {125-135},
3360    organization= {Association for Computing Machinery},
3361    abstract    = {
3362        In typed object-oriented languages the subtype relation is
3363        typically based on the inheritance hierarchy.  This approach,
3364        however, leads either to insecure type-systems or to restrictions
3365        on inheritance that make it less flexible than untyped Smalltalk
3366        inheritance.  We present a new typed model of inheritance that
3367        allows more of the flexibility of Smalltalk inheritance within a
3368        statically-typed system.  Significant features of our analysis are
3369        the introduction of polymorphism into the typing of inheritance and
3370        the uniform application of inheritance to objects, classes and
3371        types.  The resulting notion of {\em type inheritance} allows us to
3372        show that the type of an inherited object is an inherited type but
3373        not always a subtype.
3374    }
3375}
3376
3377@inproceedings{MMR92,
3378    keywords    = {},
3379    contributer = {gjditchfield@plg},
3380    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3381    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3382                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3383    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3384    year        = 1992,
3385    month       = aug,
3386    pages       = {295-312},
3387    organization= {USENIX Association},
3388    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3389    abstract    = {
3390        This paper reports our experiences integrating the Sun Microsystems
3391        RPC and XDR protocol specifications into the C++ model of
3392        input/output streams.  As part of the {\it Renaissance} operating
3393        system project, we wish to construct network servers and clients,
3394        written in C++, which interoperate with existing UNIX clients
3395        and servers.  We discovered that, although it would be possible to
3396        re-implement the procedural based XDR/RPC implementation
3397        distributed by Sun Microsystems in C++, it is far cleaner to
3398        integrate the protocols with the C++ I/O stream model.  We
3399        feel the resulting model provides a cleaner way of implementing RPC
3400        clients and servers without losing functionality or compatibility
3401        with existing clients and servers.
3402    }
3403}
3404
3405@inproceedings{Zuo08,
3406    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3407    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
3408    title       = {An Intelligent Multi-Port Memory},
3409    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3410    month       = dec,
3411    year        = 2008,
3412    pages       = {251-254},
3413    publisher   = {IEEE Computer Society},
3414    address     = {Los Alamitos, CA, USA},
3415}
3416
3417@book{Francez96,
3418    keywords    = {await, formal},
3419    contributer = {pabuhr@plg},
3420    author      = {Nissim Francez and Ira R. Forman},
3421    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3422    publisher   = {Addison-Wesley},
3423    address     = {Boston},
3424    series      = {ACM Press Books},
3425    year        = 1996,
3426}
3427
3428@article{Labreche90,
3429    keywords    = {concurrency, C++},
3430    contributer = {pabuhr@plg},
3431    author      = {Pierre Labr{\`{e}}che},
3432    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3433    journal     = sigplan,
3434    volume      = 25,
3435    number      = 4,
3436    month       = apr,
3437    year        = 1990,
3438    pages       = {20-32},
3439}
3440
3441@inproceedings{interfaces,
3442    keywords    = {parameterized interfaces, classes, recursion/inheritance},
3443    contributer = {gjditchfield@plg},
3444    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
3445        Walter G. Olthoff},
3446    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
3447    crossref    = "OOPSLA89",
3448    pages       = {457-467},
3449    abstract    = {
3450        This paper develops a system of explicit interfaces for
3451        object-oriented programming.  The system provides the benefits of
3452        module interfaces found in languages like Ada and Modula-2 while
3453        preserving the expressiveness that gives untyped object-oriented
3454        languages like Smalltalk their flexibility.  Interfaces are
3455        interpreted as polymorphic types to make the system sufficiently
3456        powerful.  We use interfaces to analyze the properties of
3457        inheritance, and identify three distinct kinds of inheritance in
3458        object-oriented programming, corresponding to objects, classes, and
3459        interfaces, respectively.  Object interfaces clarify the
3460        distinction between interface containment and inheritance and give
3461        insight into limitations caused by equating the notions of type and
3462        class in many typed object-oriented programming languages.
3463        Interfaces also have practical consequences for design,
3464        specification, and maintenance of object-oriented systems.
3465    }
3466}
3467
3468@phdthesis{Girard72,
3469    keywords    = {universal quantification},
3470    contributer = {gjditchfield@plg},
3471    author      = {J.-Y. Girard},
3472    title       = {Interpretation fonctionelle et elimination des coupures de
3473        l'arithmetique d'ordre superieur},
3474    school      = {Universite Paris},
3475    year        = {1972}
3476}
3477
3478@article{Karaorman93,
3479    keywords    = {Eiffel, concurrency libraries},
3480    contributer = {pabuhr@plg},
3481    author      = {Murat Karaorman and John Bruno},
3482    title       = {Introducing Concurrency to a Sequential Language},
3483    journal     = cacm,
3484    month       = sep,
3485    year        = 1993,
3486    volume      = 36,
3487    number      = 9,
3488    pages       = {103-116}
3489}
3490
3491@book{Corman92,
3492    keywords    = {PRAM, parallel algorithms},
3493    contributer = {pabuhr@plg},
3494    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3495    title       = {Introduction to Algorithms},
3496    publisher   = {MIT Press/McGraw-Hill},
3497    address     = {Cambridge},
3498    series      = {Electrical Engineering and Computer Science Series},
3499    year        = 1992,
3500}
3501
3502@book{Hopcroft79,
3503    keywords    = {finite-state machine, push-dowm automata},
3504    contributer = {pabuhr@plg},
3505    author      = {John E. Hopcroft and Jeffrey D. Ullman},
3506    title       = {Introduction to Automata Theory, Languages and Computation},
3507    publisher   = {Addison-Wesley},
3508    address     = {Boston},
3509    year        = 1979,
3510}
3511
3512@techreport{walker87,
3513    keywords    = {CCS},
3514    contributer = {gjditchfield@plg},
3515    author      = {David Walker},
3516    title       = {Introduction to a Calculus of Communicating Systems},
3517    institution = {Laboratory for Foundations of Computer Science},
3518    year        = 1987,
3519    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3520    month       = jun,
3521    number      = {ECS-LFCS-87-22},
3522}
3523
3524@article{katzenelson83a,
3525    author      = {Jacob Katzenelson},
3526    title       = {Introduction to Enhanced C (EC)},
3527    journal     = spe,
3528    volume      = 13,
3529    number      = 7,
3530    year        = 1983,
3531    month       = jul,
3532    pages       = {551-576},
3533}
3534
3535@book{Deitel90,
3536    keywords    = {concurrency, operating systems},
3537    contributer = {pabuhr@plg},
3538    author      = {Harvey M. Deitel},
3539    title       = {An Introduction to Operating Systems},
3540    publisher   = {Addison-Wesley},
3541    address     = {Boston},
3542    year        = 1990,
3543    edition     = {2nd},
3544}
3545
3546@techreport{Birrell89,
3547    keywords    = {threads, monitors},
3548    contributer = {pabuhr@plg},
3549    author      = {Andrew D. Birrell},
3550    title       = {An Introduction to Programming with Threads},
3551    institution = {Digital Systems Research Center},
3552    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3553    number      = {35},
3554    month       = jan,
3555    year        = 1989,
3556    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3557
3558}
3559
3560@article{t/o,
3561    keywords    = {Trellis/Owl},
3562    contributer = {gjditchfield@plg},
3563    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3564    title       = {An Introduction to Trellis/Owl},
3565    journal     = sigplan,
3566    volume      = 21,
3567    number      = 11,
3568    year        = 1986,
3569    month       = nov,
3570    pages       = {9-16},
3571}
3572
3573@inproceedings{Hibbard77,
3574    keywords    = {algol-68, concurrency},
3575    contributer = {pabuhr@plg},
3576    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3577    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3578    booktitle   = {Proceedings of the 5th Annual iii Conference},
3579    address     = {Guidel, France},
3580    month       = may,
3581    year        = 1977,
3582    pages       = {203-221}
3583}
3584
3585@inproceedings{Miller97,
3586    keywords    = {exception handling, software-engineering},
3587    contributer = {pabuhr@plg},
3588    author      = {Robert Miller and Anand Tripathi},
3589    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
3590    booktitle   = {ECOOP'97},
3591    publisher   = {Springer},
3592    volume      = 1241,
3593    series      = {Lecture Notes in Computer Science},
3594    year        = 1997,
3595    pages       = {85-103}
3596}
3597   
3598@article{Murer96,
3599    keywords    = {interators, generators, cursors},
3600    contributer = {pabuhr@plg},
3601    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3602    title       = {Iteration Abstraction in Sather},
3603    journal     = toplas,
3604    month       = jan,
3605    year        = 1996,
3606    volume      = 18,
3607    number      = 1,
3608    pages       = {1-15},
3609}
3610
3611% J
3612                 
3613@book{Java,
3614    keywords    = {Java},
3615    contributer = {pabuhr@plg},
3616    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3617    title       = {The {Java} Language Specification},
3618    publisher   = {Addison-Wesley},
3619    address     = {Reading},
3620    year        = 2000,
3621    edition     = {2nd},
3622}
3623
3624@manual{Java8,
3625    keywords    = {Java SE 8},
3626    contributer = {pabuhr@plg},
3627    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3628    title       = {The {Java} Language Specification},
3629    publisher   = {Oracle},
3630    year        = 2015,
3631    edition     = {Java SE 8},
3632}
3633
3634@manual{JUC,
3635    keywords    = {Java concurrency library},
3636    contributer = {pabuhr@plg},
3637    title       = {java.util.concurrency},
3638    author      = {Doug Lea},
3639    organization= {Oracle},
3640    year        = 2014,
3641    note        = {\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{\textsf{http://docs.oracle.com/\-javase/7/\-docs/\-api/\-java/\-util/\-concurrent/\-package-summary.html}}},
3642}
3643
3644% K
3645
3646@article{Duggan96,
3647    keywords    = {concurrency, critical section},
3648    contributer = {pabuhr@plg},
3649    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
3650    title       = {Kinded Type Inference for Parametric Overloading},
3651    journal     = acta,
3652    volume      = 33,
3653    number      = 1,
3654    year        = 1996,
3655    pages       = {21-68},
3656}
3657
3658@article{Peter35,
3659    keywords    = {recursion, Ackermann function},
3660    contributer = {pabuhr@plg},
3661    author      = {R{\'{o}}zsa P{\'{e}}ter},
3662    title       = {Konstruktion nichtrekursiver Funktionen},
3663    publisher   = {Springer},
3664    journal     = mathann,
3665    number      = 111,
3666    volume      = 1,
3667    pages       = {42-60},
3668    month       = dec,
3669    year        = 1935,
3670}
3671
3672% L
3673
3674@TechReport{WVWR88:L,
3675    contributer = {gjditchf@plg},
3676    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
3677    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
3678    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
3679    year        = 1988,
3680    number      = {88-3},
3681    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
3682                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
3683                   ED Nijmegen, The Netherlands},
3684    month       = apr,
3685    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
3686                   \item A trivial type, ``!'', with a single element.
3687                   \item Labelled types, distinct from each other.
3688                   ``!False'' and ``!True'' are distinct types, each
3689                   containing a single value serving as boolean false and
3690                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
3691                   type containing only 2.
3692                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
3693                   types are abbreviations for disjunctions.
3694                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
3695                   ``Re'' and ``Im'' are type labels that distinguish between the
3696                   fields.
3697                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
3698                   and dyadic infix functions.
3699                   \item Function types, universal types, existential types,
3700                   and subtyping (viewed as coercion), as in Fun.
3701                   \end{itemize}
3702                   Disjunctions and conjunctions types are associative and
3703                   commutative (i.e. flat).  Each type has a matching
3704                   constructor.  Functions use pattern matching on type
3705                   labels to strip labels and extract conjunction fields:
3706                   \begin{verbatim}
3707                   \lambda n {0...1000000 Guilders}. ... n ...
3708                   -- both argument and n are amounts in Guilders.
3709                   \lambda n {0...1000000} Guilders. ... n ...
3710                   -- argument in Guilders, but n is in 0...1000000.
3711                   \end{verbatim}
3712                   ``Function bundles'' (conjunctions of functions), applied
3713                   to arguments, replace Dijkstra's guarded if...fi, but the
3714                   bundles are first-class and the guards are part of their
3715                   type.
3716
3717                   The same trick used to define the type ``2'' is used to
3718                   move absolute times into the type system, to allow static
3719                   checking. ``0`'' denotes a time before the system begins
3720                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
3721                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
3722                   of a value of type a that will be available no later
3723                   (earlier) than time t.  Universals and existentials use
3724                   subtyping to parameterize functions by start time:
3725                   \begin{verbatim}
3726                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
3727                   f{then} y -- argument y must be available at time ``then''.
3728                   \end{verbatim}
3729                   Functions can return before their arguments are available
3730                   if they don't use them.  However, function {\em bundles}
3731                   can't return until their result type is known, so the
3732                   lower and upper time bounds of the bundle are the
3733                   second-last upper bound of the component functions: at
3734                   that time, there is only one alternative left.
3735
3736                   Explicit time parameterization allows slack in time
3737                   specification.  Tools could point out slack or determine
3738                   degree of parallelism.}
3739}
3740
3741@mastersthesis{Clarke90,
3742    keywords    = {concurrency, postponing requests},
3743    contributer = {pabuhr@plg},
3744    author      = {Charles L. A. Clarke},
3745    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
3746    school      = {University of Waterloo},
3747    year        = 1990,
3748    address     = {Waterloo, Ontario, Canada, N2L 3G1}
3749}
3750
3751@article{Tennent77,
3752    keywords    = {abstraction, correspondence, Pascal},
3753    contributer = {gjditchfield@plg},
3754    author      = {R. D. Tennent},
3755    title       = {Language Design Methods Based on Semantic Principles},
3756    journal     = acta,
3757    year        = 1977,
3758    volume      = 8,
3759    number      = 2,
3760    pages       = {97-112},
3761    note        = {reprinted in \cite{pldesign}},
3762    abstract    = {
3763        Two language design methods based on principles derived from the
3764        denotational approach to programming language semantics are
3765        described and illustrated by an application to the language Pascal.
3766        The principles are, firstly, the correspondence between parametric
3767        and declarative mechanisms and secondly, a principle of abstraction
3768        for programming languages adapted from set theory.  Several useful
3769        extensions and generalizations of Pascal emerge by applying these
3770        principles, including a solution to the array parameter problem,
3771        and a modularization facility.
3772    },
3773}
3774
3775@article{Liskov86,
3776    keywords    = {synchronous communication, concurrency},
3777    contributer = {pabuhr@plg},
3778    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
3779    title       = {Limitations of Synchronous Communication with Static
3780                   Process Structure in Languages for Distributed Computing},
3781    journal     = {},
3782    volume      = {},
3783    number      = {},
3784    month       = {},
3785    year        = {},
3786    pages       = {},
3787}
3788
3789@article{Linda,
3790    keywords    = {Linda, concurrency},
3791    contributer = {pabuhr@plg},
3792    author      = {Nicholas Carriero and David Gelernter},
3793    title       = {Linda in Context},
3794    journal     = cacm,
3795    volume      = 32,
3796    number      = 4,
3797    month       = apr,
3798    year        = 1989,
3799    pages       = {444-458}
3800}
3801
3802@book{Weissman67,
3803    keywords    = {lisp},
3804    author      = {Clark Weissman},
3805    title       = {Lisp 1.5 Primer},
3806    publisher   = {Dickenson Publishing},
3807    address     = {Belmont},
3808    year        = 1967,
3809}
3810
3811@article{Sundell08,
3812    keywords    = {lock free, deque},
3813    contributer = {pabuhr@plg},
3814    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
3815    title       = {Lock-free Deques and Doubly Linked Lists},
3816    journal     = {J. Parallel Distrib. Comput.},
3817    volume      = 68,
3818    number      = 7,
3819    year        = 2008,
3820    pages       = {1008-1020},
3821}
3822
3823@article{Cormack89,
3824    keywords    = {parsing, LR, error recovery},
3825    contributer = {pabuhr@plg},
3826    author      = {Gordon V. Cormack},
3827    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
3828    journal     = sigplan,
3829    volume      = 24,
3830    number      = 7,
3831    month       = jul,
3832    year        = 1989,
3833    pages       = {161-169},
3834    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
3835}
3836
3837% M
3838
3839@book{M68K,
3840    keywords    = {M680XX, Motorola},
3841    contributer = {pabuhr@plg},
3842    key         = {Motorola},
3843    title       = {M68000 Family Programmer's Reference Manual},
3844    publisher   = {Motorola},
3845    year        = 1992,
3846}
3847
3848@article{c++libs,
3849    keywords    = {directory structure},
3850    contributer = {gjditchfield@plg},
3851    author      = {J. M. Coggins and G. Bollella},
3852    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
3853    journal     = sigplan,
3854    year        = 1989,
3855    month       = jun, volume = 24, number = 6, pages = {37-48},
3856    abstract    = {
3857        This paper describes a scheme we have used to manage a large
3858        library written in the C++ language.  The scheme imposes a
3859        directory structure, and represents dependency hierarchy in a
3860        globally accessible file we call the 'prelude' file.  We also
3861        discuss the structure of the description files (makefiles) used
3862        with the UNIX options we have found to be useful in reducing the
3863        size of the library, and how to minimize recompilation time after
3864        trivial changes to the source code of the library.
3865    }
3866}
3867
3868@inproceedings{mprof,
3869    keywords    = {malloc},
3870    contributer = {gjditchfield@plg},
3871    author      = {Benjamin Zorn and Paul Hilfinger},
3872    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
3873    booktitle   = {Summer 1988 {USENIX} proceedings},
3874    year        = 1988
3875}
3876
3877@manual{MMTk,
3878    keywords    = {Java memory management},
3879    contributer = {pabuhr@plg},
3880    title       = {MMTk: The Memory Management Toolkit},
3881    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
3882    month       = sep,
3883    year        = 2006,
3884    note        = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
3885}
3886
3887@article{Adve10,
3888    keywords    = {Java memory management},
3889    contributer = {pabuhr@plg},
3890    author      = {Sarita V. Adve and Hans-J. Boehm},
3891    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
3892    journal     = cacm,
3893    volume      = 53,
3894    number      = 8,
3895    month       = aug,
3896    year        = 2010,
3897    pages       = {90-101},
3898    publisher   = {ACM},
3899    address     = {New York, NY, USA},
3900}
3901@techreport{Mesa,
3902    keywords    = {monitors, packages},
3903    contributer = {pabuhr@plg},
3904    author      = {James G. Mitchell and William Maybury and Richard Sweet},
3905    title       = {Mesa Language Manual},
3906    institution = {Xerox Palo Alto Research Center},
3907    number      = {CSL--79--3},
3908    month       = apr,
3909    year        = 1979
3910}
3911
3912@article{Andrews89,
3913    keywords    = {semaphore, split-binary, baton},
3914    contributer = {pabuhr@plg},
3915    author      = {Gregory R. Andrews},
3916    title       = {A Method for Solving Synronization Problems},
3917    journal     = scp,
3918    volume      = 13,
3919    number      = 4,
3920    month       = dec,
3921    year        = 1989,
3922    pages       = {1-21},
3923}
3924
3925@inproceedings{Mitchell78,
3926    keywords    = {Mesa},
3927    contributer = {pabuhr@plg},
3928    author      = {James G. Mitchell},
3929    title       = {Mesa: A Designer's User Perspective},
3930    booktitle   = {Spring CompCom 78},
3931    organization= {Sixteenth IEEE Computer Society International Conference},
3932    address     = {San Francisco, California, U.S.A.},
3933    month       = feb,
3934    year        = 1978,
3935    pages       = {36-39},
3936    note        = {IEEE Catalog No. 78CH1328-4C},
3937}
3938
3939@article{Gentleman81,
3940    keywords    = {messages, concurrency},
3941    contributer = {pabuhr@plg},
3942    author      = {W. Morven Gentleman},
3943    title       = {Message Passing between Sequential Processes:
3944                   the Reply Primitive and the Administrator Concept},
3945    journal     = spe,
3946    month       = may,
3947    year        = 1981,
3948    volume      = 11,
3949    number      = 5,
3950    pages       = {435-466}
3951}
3952
3953@article{Cormack88,
3954    keywords    = {concurrency},
3955    contributer = {pabuhr@plg},
3956    author      = {G. V. Cormack},
3957    title       = {A Micro Kernel for Concurrency in C},
3958    journal     = spe,
3959    month       = may,
3960    year        = 1988,
3961    volume      = 18,
3962    number      = 4,
3963    pages       = {485-491}
3964}
3965
3966@article{Buhr90a,
3967    keywords    = {concurrency, light-weight process, shared memory},
3968    contributer = {pabuhr@plg},
3969    author      = {Peter A. Buhr and Richard A. Stroobosscher},
3970    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
3971    journal     = spe,
3972    volume      = 20,
3973    number      = 9,
3974    month       = sep,
3975    year        = 1990,
3976    pages       = {929-963},
3977}
3978
3979@techreport{uSystem,
3980    keywords    = {C, concurrency, light-weight process, shared memory},
3981    contributer = {pabuhr@plg},
3982    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
3983    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
3984    institution = {Department of Computer Science, University of Waterloo},
3985    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3986    month       = sep,
3987    year        = 1994,
3988    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
3989}
3990
3991@book{Mips4000,
3992    key         = {Mips4000},
3993    title       = {MIPS R4000 Microprocessor User's Manual},
3994    publisher   = {MIPS Computer Systems Inc},
3995    year        = 1991,
3996}
3997
3998@inproceedings{Mjolner,
3999    keywords    = {Mjolner, hierarchical windows},
4000    contributer = {pabuhr@plg},
4001    author      = {G\"{o}rel Hedin and Boris Magnusson},
4002    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4003    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4004    organization= {ECOOP'88},
4005    publisher   = {Springer},
4006    volume      = 322,
4007    editor      = {S. Gjessing and K. Nygaard},
4008    address     = {Oslo, Norway},
4009    month       = aug,
4010    year        = 1988,
4011    pages       = {41-54},
4012    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4013}
4014
4015@article{Skillicorn98,
4016    keywords    = {parallel models},
4017    contributer = {pabuhr@plg},
4018    author      = {David B. Skillicorn and Domenico Talia},
4019    title       = {Models and Languages for Parallel Computation},
4020    journal     = acmcs,
4021    volume      = 30,
4022    number      = 2,
4023    month       = jun,
4024    year        = 1998,
4025    pages       = {123-169},
4026}
4027
4028@article{Werther96,
4029    keywords    = {C++, language syntax},
4030    contributer = {pabuhr@plg},
4031    author      = {Ben Werther and Damian Conway},
4032    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4033    journal     = sigplan,
4034    volume      = 31,
4035    number      = 11,
4036    month       = nov,
4037    year        = 1996,
4038    pages       = {74-82},
4039}
4040
4041@book{Alexandrescu01,
4042    keywords    = {c design-patterns programming},
4043    contributer = {pabuhr@plg},
4044    author      = {Andrei Alexandrescu},
4045    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4046    publisher   = {Addison-Wesley Professional},
4047    address     = {Boston},
4048    month       = feb,
4049    year        = 2001,
4050    isbn        = {0201704315},
4051}
4052
4053@book{Tanenbaum92,
4054    keywords    = {concurrency, operating systems},
4055    contributer = {pabuhr@plg},
4056    author      = {Andrew S. Tanenbaum},
4057    title       = {Modern Operating Systems},
4058    publisher   = {Prentice-Hall},
4059    address     = {Englewood Cliffs},
4060    year        = 1992,
4061}
4062
4063@article{Wirth77,
4064    keywords    = {modules, coroutines},
4065    contributer = {pabuhr},
4066    author      = {Niklaus Wirth},
4067    title       = {Modula: a Language for Modular Multiprogramming},
4068    journal     = spe,
4069    month       = {January--February},
4070    year        = 1977,
4071    volume      = 7,
4072    number      = 1,
4073    pages       = {3-35},
4074}
4075
4076@book{Harbison92,
4077    contributer = {mhcoffin},
4078    author      = {Samuel P. Harbison},
4079    title       = {Modula-3},
4080    publisher   = {Prentise Hall, Inc.},
4081    year        = {1992},
4082    comment     = {This is a textbook for learning Modula-3.}
4083}
4084
4085@techreport{Modula-3:old,
4086    keywords    = {Modula-3, inheritance, type extension},
4087    contributer = {gjditchfield@plg},
4088    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4089                   Jordan and Bill Kalsow and Greg Nelson},
4090    title       = {Modula-3 Report},
4091    institution = {Systems Research Center},
4092    address     = {130 Lytton Avenue, Palo Alto, California  94301},
4093    month       = aug,
4094    year        = 1988,
4095    number      = 31
4096}
4097 
4098@article{Dueck90,
4099    keywords    = {attribute grammars},
4100    contributer = {pabuhr@plg},
4101    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
4102    title       = {Modular Attribute Grammars},
4103    journal     = {The Computer Journal},
4104    month       = apr,
4105    year        = 1990,
4106    volume      = 33,
4107    number      = 2,
4108    pages       = {164-172},
4109}
4110
4111@article{Yemini85,
4112    keywords    = {exception handling},
4113    contributer = {pabuhr@plg},
4114    author      = {Shaula Yemini and Daniel M. Berry},
4115    title       = {A Modular Verifiable Exception-Handling Mechanism},
4116    journal     = toplas,
4117    month       = apr,
4118    year        = 1985,
4119    volume      = 7,
4120    number      = 2,
4121    pages       = {214-243},
4122}
4123
4124@article{Buhr95b,
4125    keywords    = {concurrency, monitors, classification},
4126    contributer = {pabuhr@plg},
4127    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4128    title       = {Monitor Classification},
4129    journal     = acmcs,
4130    volume      = 27,
4131    number      = 1,
4132    month       = mar,
4133    year        = 1995,
4134    pages       = {63-107},
4135}
4136
4137@article{Hoare74,
4138    keywords    = {monitor},
4139    contributer = {pabuhr@plg},
4140    author      = {C. A. R. Hoare},
4141    title       = {Monitors: An Operating System Structuring Concept},
4142    journal     = cacm,
4143    volume      = 17,
4144    number      = 10,
4145    month       = oct,
4146    year        = 1974,
4147    pages       = {549-557},
4148    annote      = {
4149    }
4150}
4151
4152@inbook{Buhr99a,
4153    keywords    = {concurrency, monitors, classification},
4154    contributer = {pabuhr@plg},
4155    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4156    title       = {Encyclopedia of Computer Science and Technology},
4157    chapter     = {Monitor Taxonomy},
4158    publisher   = {Marcel Dekker, Inc},
4159    volume      = {40, supplement 25},
4160    year        = 1999,
4161    pages       = {191-212},
4162}
4163%    editor     = {Allen Kent and James G. Williams},
4164
4165@manual{MPI,
4166    keywords    = {MPI},
4167    contributer = {pabuhr@plg},
4168    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
4169    organization= {Message Passing Interface Forum},
4170    address     = {University of Tennessee, Knoxville, Tennessee},
4171    month       = jun,
4172    year        = 2015,
4173    note        = {\href{http://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}{\textsf{http://www.mpi-forum.org/\-docs/\-mpi-3.1/\-mpi31-report.pdf}}},
4174}
4175
4176@article{multilisp,
4177    keywords    = {futures, scheme},
4178    contributer = {gjditchfield@plg},
4179    author      = {Halstead, Jr.,Robert H.},
4180    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
4181    journal     = toplas,
4182    volume      = 7,
4183    number      = 4,
4184    pages       = {501-538},
4185    month       = oct,
4186    year        = 1985,
4187    comment     = {
4188        (future E) begins evaluating the expression E, and
4189        returns a ``future'' representing the value.  When evaluation is
4190        finished, the value of E replaces the future.  Operations that need
4191        the future's value suspend until it is available.  Assignment and
4192        parameter passing do not suspend.  Future introduces concurrency
4193        between the calculation of a value and its use; reference to
4194        futures is a synchronization mechanism.
4195
4196        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4197        applies F to the arguments.  pcall can be built from future and a
4198        ``touch'' operation.  pcall is included because it may not be easy
4199        to determine that there are no critical sections between the future
4200        expression and the code between the future call and the value's
4201        first use.
4202
4203        (delay E) is like future, but E's process does not begin until its
4204        value is needed.  It provides lazy evaluation.  Replacing delay
4205        with future would launch an infinite number of processes.
4206    }
4207}
4208
4209@techreport{Bretthauer89,
4210    keywords    = {multiple inheritance},
4211    contributer = {pabuhr@plg},
4212    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp}, 
4213    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4214    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4215    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4216    number      = {Arbeitspapiere der GMD 415},
4217    month       = nov,
4218    year        = 1989,
4219}
4220
4221@inproceedings{c++:multinh,
4222    keywords    = {C++, multiple inheritance, implementation},
4223    contributer = {gjditchfield@plg},
4224    author      = {Bjarne Stroustrup},
4225    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4226    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
4227    month       = may, year = 1987
4228}
4229
4230@inproceedings{st:mult,
4231    keywords    = {smalltalk, multiple inheritance, implementation},
4232    contributer = {gjditchfield@plg},
4233    author      = {Daniel H. H. Ingalls and A. H. Borning},
4234    title       = {Multiple Inheritance in Smalltalk-80},
4235    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
4236    month       = aug,
4237    year        = 1982,
4238    pages       = {234-238},
4239    organization= {American Association for Artificial Intelligence},
4240    comment     = {
4241        Methods are looked up in the current class, the superclasses, the
4242        supersuperclasses, etc.  The same method can be inherited
4243        repeatedly, but having different methods for the same message is an
4244        error.  Only one copy is made for multiply-inherited fields.
4245
4246        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
4247        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4248        super m}.  {\tt all.m} invokes all inherited versions of m.
4249
4250        Methods on the first-superclass chain are found as usual.  Methods
4251        from other superclasses are copied into the class dictionary.  An
4252        error method is created if inherited methods conflict.  The parser
4253        is changed to allow compound selectors.  {\tt Object
4254        messageNotUnderstood} is changed to look for compound selectors and
4255        dynamically add a method with the right name and body to the class.
4256        When methods are edited, they are copied into subclasses and
4257        compound selector versions are deleted, as appropriate.
4258    }
4259}
4260
4261@article{Lamport86I,
4262    keywords    = {software solutions, N-thread, mutual exclusions},
4263    contributer = {pabuhr@plg},
4264    author      = {Leslie Lamport},
4265    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4266    journal     = jacm,
4267    volume      = 33,
4268    number      = 2,
4269    month       = apr,
4270    year        = 1986,
4271    pages       = {313--326},
4272    numpages    = {14},
4273    publisher   = {ACM},
4274    address     = {New York, NY, USA},
4275}
4276
4277@article{Lamport86II,
4278    keywords    = {software solutions, N-thread, mutual exclusions},
4279    contributer = {pabuhr@plg},
4280    author      = {Leslie Lamport},
4281    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4282    journal     = jacm,
4283    volume      = 33,
4284    number      = 2,
4285    month       = apr,
4286    year        = 1986,
4287    pages       = {327--348},
4288    numpages    = {22},
4289    publisher   = {ACM},
4290    address     = {New York, NY, USA},
4291}
4292
4293@article{Burns78,
4294    keywords    = {hardware, N-process solution, O(N)},
4295    contributer = {pabuhr@plg},
4296    author      = {James E. Burns},
4297    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4298    journal     = {SIGACT News},
4299    volume      = 10,
4300    number      = 2,
4301    month       = {Summer},
4302    year        = 1978,
4303    pages       = {42-47},
4304}
4305
4306@inproceedings{Burns80,
4307    keywords    = {N-process software solution},
4308    contributer = {pabuhr@plg},
4309    author      = {James E. Burns and Nancy A. Lynch},
4310    title       = {Mutual Exclusion using Indivisible Reads and Writes},
4311    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4312    year        = 1980,
4313    pages       = {833-842},
4314    note        = {\href{http://groups.csail.mit.edu/tds/papers/Lynch/allertonconf.pdf}{\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}} [Accessed on March 2014]},
4315    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4316}
4317
4318@article{Peterson81,
4319    keywords    = {concurrency, critical section},
4320    contributer = {pabuhr@plg},
4321    author      = {G. L. Peterson},
4322    title       = {Myths About the Mutual Exclusion Problem},
4323    journal     = ipl,
4324    year        = 1981,
4325    month       = jun,
4326    volume      = 12,
4327    number      = 3,
4328    pages       = {115-116},
4329}
4330
4331% N
4332
4333@article{Haddon77,
4334    keywords    = {monitors, nested monitor calls},
4335    contributer = {pabuhr@plg},
4336    author      = {Bruce K. Haddon},
4337    title       = {Nested Monitor Calls},
4338    journal     = osr,
4339    volume      = 11,
4340    number      = 4,
4341    month       = oct,
4342    year        = 1977,
4343    pages       = {18-23},
4344}
4345
4346@inproceedings{nesting,
4347    keywords    = {},
4348    contributer = {gjditchfield@plg},
4349    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4350    title       = {Nesting in {Ada} Programs is for the Birds},
4351    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4352        Programming Language},
4353    year        = 1980,
4354    month       = dec, pages = {139-145},
4355    note        = {SIGPLAN Notices, v. 15, n. 11},
4356    abstract    = {
4357        Given a data abstraction construct like the Ada package and in the
4358        light of current thoughts on programming methodology, we feel that
4359        nesting is an anachronism.  In this paper we propose a nest-free
4360        program style for Ada that eschews nested program units and
4361        declarations within blocks and instead heavily utilizes packages
4362        and context specifications as mechanisms for controlling
4363        visibility.  We view this proposal as a first step toward the
4364        development of programming methods that exploit the novel language
4365        features available in Ada.  Consideration of this proposal's
4366        ramifications for data flow, control flow, and overall program
4367        structure substantiates our contention that a tree structure is
4368        seldom a natural representation of a program and that nesting
4369        therefore generally interferes with program development and
4370        readability.
4371    }
4372}
4373
4374@inproceedings{Buhr88,
4375    keywords    = {nested classes, persistence},
4376    contributer = {pabuhr@plg},
4377    author      = {P. A. Buhr and C. R. Zarnke},
4378    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
4379    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4380    publisher   = {Springer},
4381    volume      = 322,
4382    editor      = {S. Gjessing and K. Nygaard},
4383    address     = {Oslo, Norway},
4384    month       = aug,
4385    year        = 1988,
4386    pages       = {128-145},
4387    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4388}
4389
4390@inproceedings{Thompson90new,
4391    keywords    = {Plan 9},
4392    contributer = {pabuhr@plg},
4393    title       = {A New C Compiler},
4394    author      = {Ken Thompson},
4395    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
4396    year        = 1990,
4397    pages       = {41--51},
4398    url         = {http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}
4399}
4400
4401@article{Trono94,
4402    author      = {John A. Trono},
4403    title       = {A New Exercise in Concurrency},
4404    journal     = {SIGCSE Bulletin},
4405    volume      = {26},
4406    number      = {3},
4407    month       = sep,
4408    year        = {1994},
4409    pages       = {8-10},
4410    publisher   = {ACM},
4411    address     = {New York, NY, USA},
4412}
4413
4414@article{Lamport74,
4415    keywords    = {concurrency, N-Process solution, O(N)},
4416    contributer = {pabuhr@plg},
4417    author      = {Leslie Lamport},
4418    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
4419    journal     = cacm,
4420    month       = aug,
4421    year        = 1974,
4422    volume      = 17,
4423    number      = 8,
4424    pages       = {453-455},
4425}
4426
4427@article{landin,
4428    keywords    = {},
4429    contributer = {gjditchfield@plg},
4430    author      = {P. J. Landin},
4431    title       = {The Next 700 Programing Languages},
4432    journal     = cacm,
4433    year        = 1966,
4434    volume      = 9,
4435    pages       = {157-164},
4436}
4437
4438@article{Herlihy05,
4439    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4440    contributer = {pabuhr@plg},
4441    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4442    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4443    journal     = tocs,
4444    volume      = 23,
4445    number      = 2,
4446    month       = may,
4447    year        = 2005,
4448    pages       = {146-196},
4449    numpages    = {51},
4450    publisher   = {ACM},
4451    address     = {New York, NY, USA},
4452}
4453
4454% O
4455
4456@inproceedings{oop:abcl/1,
4457    keywords    = {concurrency, OOPL, futures},
4458    contributer = {gjditchfield@plg},
4459    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4460    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
4461    crossref    = "OOPSLA86",
4462    pages       = {258-268},
4463    comment     = {
4464        Actions for messages sent to an object are executed concurrently
4465        iff the object has no members.  A select construct specifies a set
4466        of message patterns.
4467
4468        Express messages have priority.  If an express message arrives
4469        while an ordinary message is being processed, the action for the
4470        ordinary message is suspended or aborted and the action for the
4471        express message is executed.  The sender decides which class a
4472        message belongs in.  Non-interruptible sections can be defined.
4473
4474        Message sends can be non-blocking, or can block until a reply is
4475        received, at the sender's option.  The receiver can continue to
4476        execute after sending the reply.
4477
4478        Replies can send back ``futures'', and put values in them later.
4479        Futures are queues of values, not single values.  The caller can
4480        use a ``ready?'' predicate to test for empty queue, or can use
4481        operations to get the first or all queue elements; these operations
4482        block if the queue is empty.
4483    }
4484}
4485
4486@techreport{Schmidt95,
4487    keywords    = {ACE, concurrency, library},
4488    contributer = {pabuhr@plg},
4489    author      = {Douglas C. Schmidt},
4490    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4491    institution = {Washington University in St. Louis},
4492    year        = 1995,
4493    number      = 31,
4494    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4495}
4496
4497@inproceedings{OOEx,
4498    keywords    = {Exceptions, object-oriented programming languages},
4499    contributer = {gjditchfield@plg},
4500    author      = {Christophe Dony},
4501    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
4502    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
4503    year        = 1988,
4504    pages       = {146-161},
4505    editor      = {S. Gjessing and K. Nygaard},
4506    organization= {DND, The Norwegian Computer Society},
4507    publisher   = {Springer},
4508    comment     = {
4509           Objectives:
4510           - Users can define new exceptions.
4511           - Default handlers can be attached to exceptions.
4512           - Handlers can be attached to classes.
4513           - Handlers can be attached to dynamic entities (expressions).
4514           - Exceptions propagate first along the invocation chain.
4515           - Exceptions should be hierarchically organized classes.
4516           - Handlers should take into account the exception hierarchy (i.e.,
4517             should handle raising of sub-exceptions).
4518           The ``exceptional-event'' class has two subclasses.  ``Warning''
4519           has a ``resume'' method, and ``error'' has ``exit'' and
4520           ``retry'' methods.  Signalling an exception creates an instance
4521           of the exception, whose members are used to pass information
4522           back to the handler.  Handlers are instances of class
4523           ``protect-handler'' with a method ``protect {\em expression}'',
4524           or are methods defined for the class or the exception.
4525    }
4526}
4527
4528@article{CommonObjects,
4529    author      = {A. Snyder},
4530    title       = {Object-Oriented Programming for Common Lisp},
4531    address     = {Palo Alto CA},
4532    year        = 1985,
4533    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4534    journal     = {Report ATC-85-1},
4535}
4536
4537@book{objective-c,
4538    keywords    = {},
4539    author      = {Brad J. Cox},
4540    title       = {Object-oriented programming; an evolutionary approach},
4541    publisher   = {Addison-Wesley},
4542    address     = {Boston},
4543    year        = 1986
4544}
4545
4546@book{Beta,
4547    keywords    = {Beta, object oriented, concurrency, exceptions},
4548    contributer = {pabuhr@plg},
4549    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
4550    title       = {Object-oriented Programming in the {BETA} Programming Language},
4551    publisher   = {Addison-Wesley},
4552    address     = {Boston},
4553    year        = 1993,
4554}
4555
4556@article{Flavors,
4557    author      = {D. A. Moon},
4558    title       = {Object-Oriented Programming with Flavors},
4559    address     = {Portland OR},
4560    month       = sep,
4561    year        = 1986,
4562    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
4563}
4564
4565@article{Buhr00b,
4566    keywords    = {concurrency, C++, real-time},
4567    contributer = {pabuhr@plg},
4568    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
4569    title       = {Object-Oriented Real-Time Concurrency},
4570    journal     = sigplan,
4571    volume      = 35,
4572    number      = 10,
4573    month       = oct,
4574    year        = 2000,
4575    pages       = {29-46},
4576    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
4577}
4578
4579@book{Meyer88,
4580    keywords    = {Eiffel},
4581    contributer = {pabuhr@plg},
4582    author      = {Bertrand Meyer},
4583    title       = {Object-oriented Software Construction},
4584    publisher   = {Prentice-Hall},
4585    address     = {Englewood Cliffs},
4586    year        = {1988},
4587    series      = {Prentice-Hall International Series in Computer Science},
4588}
4589
4590@article{objectPascal,
4591    keywords    = {objects, modules},
4592    contributer = {gjditchfield@plg},
4593    author      = {Larry Tesler},
4594    title       = {Object Pascal Report},
4595    journal     = {Structured Language World},
4596    year        = 1985,
4597    volume      = 9,
4598    number      = 3,
4599}
4600
4601@misc{obj-c:next,
4602    keywords    = {categories, protocols, Objective C},
4603    contributor = {gjditchfield@angus},
4604    author      = {NeXT Computer, Inc.},
4605    title       = {Objective C Extensions},
4606    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
4607    year        = 1993
4608}
4609
4610@book{Galletly96,
4611    keywords    = {occam},
4612    author      = {John Galletly},
4613    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
4614    publisher   = {{UCL} (University College London) Press},
4615    address     = {London},
4616    edition     = {2nd},
4617    year        = 1996,
4618}
4619
4620@techreport{Morrison88,
4621    keywords    = {objects, concurrency, persistence},
4622    contributer = {pabuhr@plg},
4623    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
4624    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
4625    institution = {Department of Computational Science, University of St. Andrews, Scotland},
4626    number      = {PPRR 57},
4627    month       = jan,
4628    year        = 1988,
4629}
4630
4631@article{Peterson73,
4632    keywords    = {goto, structured programming},
4633    contributer = {pabuhr@plg},
4634    author      = {W. W. Peterson and T. Kasami and N. Tokura},
4635    title       = {On the Capabilities of While, Repeat, and Exit Statements},
4636    journal     = cacm,
4637    month       = aug,
4638    year        = 1973,
4639    volume      = 16,
4640    number      = 8,
4641    pages       = {503-512}
4642}
4643
4644@article{Baker82,
4645    keywords    = {compilation},
4646    contributer = {gjditchfield@plg},
4647    author      = {Theodore P. Baker},
4648    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
4649    journal     = toplas,
4650    year        = 1982,
4651    month       = oct,
4652    volume      = 4,
4653    number      = 4,
4654    pages       = {601-614},
4655    abstract    = {
4656        A simple method is presented for detecting ambiguities and finding
4657        the correct interpretations of expressions in the programming
4658        language Ada.  Unlike previously reported solutions to this
4659        problem, which require multiple passes over a tree structure, the
4660        method described here operates in one bottom-up pass, during which
4661        a directed acyclic graph is produced.  The correctness of this
4662        approach is demonstrated by a brief formal argument.
4663    },
4664    comment     = {
4665        See also \cite{D:overload}.
4666        }
4667}
4668
4669@techreport{OpenMP,
4670    keywords    = {concurrency, openmp, spmd},
4671    contributer = {pabuhr@plg},
4672    author      = {OpenMP Architecture Review Board},
4673    title       = {OpenMP Application Program Interface, Version 4.0},
4674    month       = jul,
4675    year        = 2013,
4676    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://\-www.openmp.org/\-mp-documents/\-OpenMP4.0.0.pdf}}},
4677}
4678
4679@book{Deitel04,
4680    keywords    = {concurrency, operating systems},
4681    contributer = {pabuhr@plg},
4682    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
4683    title       = {Operating Systems},
4684    publisher   = {Pearson Prentice-Hall},
4685    address     = {Englewood Cliffs},
4686    year        = 2004,
4687    edition     = {3rd},
4688}
4689
4690@book{Stalling98,
4691    keywords    = {concurrency, operating systems},
4692    contributer = {pabuhr@plg},
4693    author      = {William Stallings},
4694    title       = {Operating Systems: Internals and Design Principles},
4695    publisher   = {Prentice-Hall},
4696    address     = {Englewood Cliffs},
4697    year        = 1998,
4698    edition     = {3rd},
4699}
4700
4701@book{Stalling01,
4702    keywords    = {concurrency, operating systems},
4703    contributer = {pabuhr@plg},
4704    author      = {William Stallings},
4705    title       = {Operating Systems: Internals and Design Principles},
4706    publisher   = {Prentice-Hall},
4707    address     = {Englewood Cliffs},
4708    year        = 2001,
4709    edition     = {4th},
4710}
4711
4712@book{Silberschatz91,
4713    keywords    = {concurrency, operating systems},
4714    contributer = {pabuhr@plg},
4715    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
4716    title       = {Operating System Concepts},
4717    publisher   = {Addision-Wesley},
4718    address     = {Boston},
4719    year        = 1991,
4720    edition     = {3rd},
4721}
4722
4723@book{Tanenbaum87,
4724    keywords    = {concurrency, operating systems},
4725    contributer = {pabuhr@plg},
4726    author      = {Andrew S. Tanenbaum},
4727    title       = {Operating Systems : Design and Implementation},
4728    publisher   = {Prentice-Hall},
4729    address     = {Englewood Cliffs},
4730    series      = {Software Series},
4731    year        = 1987,
4732}
4733
4734@book{Hansen73,
4735    keywords    = {monitors},
4736    contributer = {pabuhr@plg},
4737    author      = {Per {Brinch Hansen}},
4738    title       = {Operating System Principles},
4739    publisher   = {Prentice-Hall},
4740    address     = {Englewood Cliffs},
4741    year        = 1973,
4742}
4743
4744@book{Bic03,
4745    keywords    = {concurrency, operating systems},
4746    contributer = {pabuhr@plg},
4747    author      = {Lubomir F. Bic and Alan C. Shaw},
4748    title       = {Operating System Principles},
4749    publisher   = {Prentice-Hall},
4750    address     = {Englewood Cliffs},
4751    year        = 2003,
4752}
4753
4754@techreport{milner88,
4755    keywords    = {},
4756    contributer = {gjditchfield@plg},
4757    author      = {Robin Milner},
4758    title       = {Operational and Algebraic Semantics of Concurrent Processes},
4759    institution = {Laboratory for Foundations of Computer Science},
4760    year        = 1988,
4761    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
4762    month       = feb,
4763    number      = {ECS-LFCS-88-46}
4764}
4765
4766@article{Ganzinger80,
4767    contributer = {a3moss@uwaterloo.ca},
4768    author      = {Ganzinger, Harald and Ripken, Knut},
4769    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
4770    journal     = {SIGPLAN Notices},
4771    issue_date  = {February 1980},
4772    volume      = {15},
4773    number      = {2},
4774    month       = feb,
4775    year        = {1980},
4776    issn        = {0362-1340},
4777    pages       = {30--42},
4778    numpages    = {13},
4779    url         = {http://doi.acm.org/10.1145/947586.947589},
4780    doi         = {10.1145/947586.947589},
4781    publisher   = {ACM},
4782    address     = {New York, NY, USA}
4783}
4784
4785@article{Ford82,
4786    keywords    = {},
4787    contributer = {pabuhr@plg},
4788    author      = {G. Ford and B. Hansche},
4789    title       = {Optional, Repeatable, and Varying Type Parameters},
4790    journal     = sigplan,
4791    volume      = 17,
4792    number      = 2,
4793    month       = feb,
4794    year        = 1982,
4795    pages       = {41-48},
4796}
4797
4798@manual{pli,
4799    keywords    = {PL/I},
4800    contributer = {gjditchfield@plg},
4801    key         = {IBM},
4802    title       = {{OS} and {DOS} {PL/I} Reference Manual},
4803    organization= {International Business Machines},
4804    edition     = {1st},
4805    month       = sep,
4806    year        = 1981,
4807    note        = {Manual GC26-3977-0},
4808}
4809
4810@techreport{D:overload,
4811    keywords    = {overload resolution, compilation},
4812    contributer = {gjditchfield@plg},
4813    author      = {M. Dausmann et. al.},
4814    title       = {Overloading in {Ada}},
4815    institution = {Universitat Karlsruhe},
4816    year        = 1979,
4817    number      = {23/79},
4818    comment     = {
4819        Probably the earliest description of the two-pass (bottom-up,
4820        top-down) overload resolution algorithm. See also
4821        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
4822    }
4823}
4824
4825@article{EB87,
4826    keywords    = {packages, private types, assignment, equality},
4827    contributer = {gjditchfield@plg},
4828    author      = {J. Dana Eckart and Richard J. LeBlanc},
4829    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
4830    journal     = {Computer Languages},
4831    year        = 1987,
4832    volume      = 12, number = {3/4}, pages = {163-172},
4833    abstract    = {
4834        Packages in the Ada language provide a mechanism for extending the
4835        language through the development of additional data types.  Such
4836        types can be better integrated into the language using operator
4837        overloading; however, key limitations prevent new types from being
4838        transparently integrated into the language.  Allowing function
4839        names to overload private type names would give a cleaner and
4840        clearer mechanism for building values of these types.  Furthermore,
4841        by allowing redefinitions of ``:='' and by making it easier to
4842        overload ``='' for private types, Ada coud be transformed into a
4843        more expressive language.
4844    }
4845}
4846
4847@article{PW:overload,
4848    keywords    = {compilation},
4849    contributer = {gjditchfield@plg},
4850    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
4851    title       = {Overloading in Preliminary {Ada}},
4852    journal     = sigplan,
4853    year        = 1980,
4854    month       = nov, volume = 15, number = 11, pages = {47-56},
4855    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming
4856         Language}, 
4857    comment     = {
4858        The two-pass (bottom-up, then top-down) algorithm, with a proof
4859        that two passes suffice.  See also \cite{D:overload}.
4860    }
4861}
4862
4863@article{SR,
4864    keywords    = {concurrency, messages, rendezvous},
4865    contributer = {pabuhr@plg},
4866    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
4867                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
4868    title       = {An Overview of the {SR} Language and Implementation},
4869    journal     = toplas,
4870    month       = jan,
4871    year        = 1988,
4872    volume      = 10,
4873    number      = 1,
4874    pages       = {51-86},
4875}
4876
4877% P
4878
4879@article{Andrews91,
4880    keywords    = {general concurrency},
4881    contributer = {pabuhr@plg},
4882    author      = {Gregory R. Andrews},
4883    title       = {Paradigms for Process Interaction in Distributed Programs},
4884    journal     = acmcs,
4885    volume      = 23,
4886    number      = 1,
4887    month       = mar,
4888    year        = 1991,
4889    pages       = {49-90},
4890}
4891
4892@book{PPC++,
4893    keywords    = {concurrency, parallel, distributed, C++},
4894    contributer = {pabuhr@plg},
4895    editor      = {Gregory V. Wilson and Paul Lu},
4896    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4897    publisher   = {MIT Press},
4898    series      = {Scientific and Engineering Computation Series},
4899    year        = 1996,
4900    pages       = {1-42},
4901}
4902
4903@incollection{Stroustrup96,
4904    keywords    = {concurrency, C++},
4905    contributer = {pabuhr@plg},
4906    author      = {Bjarne Stroustrup},
4907    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4908    editor      = {Gregory V. Wilson and Paul Lu},
4909    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4910    publisher   = {MIT Press},
4911    series      = {Scientific and Engineering Computation Series},
4912    year        = 1996,
4913    pages       = {xxvi-xxvii},
4914}
4915
4916@incollection{Yang96b,
4917    keywords    = {concurrency, C++},
4918    contributer = {pabuhr@plg},
4919    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
4920    editor      = {Gregory V. Wilson and Paul Lu},
4921    title       = {p{C}++},
4922    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4923    publisher   = {MIT Press},
4924    address     = {Cambridge},
4925    series      = {Scientific and Engineering Computation Series},
4926    pages       = {507-546},
4927    year        = 1996,
4928}
4929
4930@article{goguen84,
4931    keywords    = {},
4932    contributer = {gjditchfield@plg},
4933    author      = {Goseph A. Goguen},
4934    title       = {Parameterized Programming},
4935    journal     = ieeese,
4936    year        = 1984,
4937    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
4938    abstract    = {
4939        Parameterized programming is a powerful technique for the reliable
4940        reuse of software.  In this technique, modules are parameterized
4941        over very general interfaces that describe what properties of an
4942        environment are required for the module to work correctly.
4943        Reusability is enhanced by the flexibility of the parameterization
4944        mechanism proposed here.  Reliability is further enhanced by
4945        permitting interface requirements to include more than purely
4946        syntactic information.  This paper introduces three new ideas that
4947        seem especially useful in supporting parameterized programming: 1)
4948        {\em theories}, which declare global properties of program modules
4949        and interfaces; 2) {\em views}, which connect theories with program
4950        modules in an elegant way; and 3) {\em module expressions}, a kind
4951        of general structured program transformation which produces new
4952        modules by modifying and combining existing modules.  Although
4953        these ideas are illustrated with some simple examples in the OBJ
4954        programming language, they should also be taken as proposals for an
4955        Ada library system, for adding modules to Prolog, and as
4956        considerations for future language design efforts.  OBJ is an
4957        ultra-high level programming language, based upon rewrite rules,
4958        that incorporates these ideas, and many others from modern
4959        programming methodology.
4960    }
4961}
4962
4963@inproceedings{c++:templates,
4964    author      = {Bjarne Stroustrup},
4965    contributer = {gjditchfield@plg},
4966    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4967    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
4968    organization= {USENIX Association},
4969    year        = 1988, pages = {1-18}
4970}
4971
4972@inproceedings{Boehm85,
4973    keywords    = {second-order unification},
4974    contributer = {gjditchfield@plg},
4975    author      = {Hans-J. Boehm},
4976    title       = {Partial Polymorphic Type Inference is Undecidable},
4977    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
4978    year        = 1985,
4979    pages       = {339-345},
4980    organization= {IEEE Computer Society},
4981    publisher   = {IEEE Computer Society Press},
4982    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
4983    summary     = {
4984        Given a base typed lambda calculus with function types, type
4985        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
4986        then type inference for the partially typed language
4987        \begin{eqnarray}
4988        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
4989        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
4990        e \tau                  &\Rightarrow& e ?
4991        \end{eqnarray}
4992        is undecidable.
4993    }
4994}
4995
4996@book{Pascal,
4997    keywords    = {Pascal},
4998    contributer = {pabuhr@plg},
4999    author      = {Kathleen Jensen and Niklaus Wirth},
5000    title       = {{P}ascal User Manual and Report},
5001    publisher   = {Springer--Verlag},
5002    year        = 1985,
5003    edition     = {3rd},
5004    note        = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
5005}
5006
5007@book{Pascal:old,
5008    keywords    = {Pascal},
5009    contributer = {pabuhr@plg},
5010    author      = {Kathleen Jensen and Niklaus Wirth},
5011    title       = {{P}ascal User Manual and Report},
5012    publisher   = {Springer--Verlag},
5013    year        = 1975,
5014    edition     = {1st},
5015}
5016
5017@article{Turba85,
5018    keywords    = {Pascal, exception handling, inheritance},
5019    contributer = {pabuhr@plg},
5020    author      = {Thomas N. Turba},
5021    title       = {The {P}ascal Exception Handling Proposal},
5022    journal     = sigplan,
5023    volume      = 20,
5024    number      = 8,
5025    month       = aug,
5026    year        = 1985,
5027    pages       = {93-98},
5028}
5029
5030@manual{Pascal/VS,
5031    keywords    = {PL/I},
5032    contributer = {pabuhr@plg},
5033    key         = {IBM},
5034    title       = {{P}ascal/{VS} Language Reference Manual},
5035    organization= {International Business Machines},
5036    edition     = {1st},
5037    year        = 1981,
5038    note        = {Manual SH20-6168-1},
5039}
5040
5041@article{Anderson90,
5042    keywords    = {spin locks, back off, performance},
5043    contributer = {pabuhr@plg},
5044    author      = {Thomas E. Anderson},
5045    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5046    journal     = ieeepds,
5047    month       = jan,
5048    year        = 1990,
5049    volume      = 1,
5050    number      = 1,
5051    pages       = {6-16},
5052}
5053
5054@article{poly,
5055    keywords    = {Poly, Standard ML, Russell, persistence},
5056    contributer = {gjditchfield@plg},
5057    author      = {David C. J. Matthews},
5058    title       = {Poly Manual},
5059    journal     = sigplan,
5060    month       = sep, year = 1985,
5061    volume      = 20, number = 9, pages = {52-76}
5062}
5063
5064@techreport{Atkinson87b,
5065    keywords    = {naming, persistence},
5066    contributer = {pabuhr@plg},
5067    author      = {M. P. Atkinson and R. Morrison},
5068    title       = {Polymorphic Names and Iterations},
5069    institution = {Universities of Glasgow and St. Andrews, Scotland},
5070    number      = {PPRR-53-87},
5071    month       = nov,
5072    year        = 1987,
5073}
5074
5075@book{Harland,
5076    keywords    = {},
5077    author      = {David M. Harland},
5078    title       = {Polymorphic Programming Languages: Design and Implementation},
5079    publisher   = {Ellis Horwood},
5080    year        = 1984,
5081    series      = {Computers and their Applications},
5082    address     = {Market Cross House, Cooper Street, Chichester, West Sussex,
5083        PO19 1EB, England},
5084    summary     = {
5085        The principles of Procedural Abstraction, Data Type Completeness,
5086        Declaration Correspondence, and Orthogonality are ruthlessly applied
5087        to the design of a polymorphic language.
5088    }
5089}
5090
5091@unpublished{poa,
5092    keywords    = {Force N, type inference, reusability, transcendance},
5093    contributer = {gjditchfield@plg},
5094    author      = {G. V. Cormack and A. K. Wright},
5095    title       = {Polymorphism, Overloading, and Abstraction},
5096    note        = {personal communication}
5097}
5098
5099@inproceedings{forceone:impl,
5100    keywords    = {Parametric polymorphism, ForceOne},
5101    contributer = {gjditchfield@plg},
5102    author      = {G. V. Cormack and A. K. Wright},
5103    title       = {Polymorphism in the Compiled Language {ForceOne}},
5104    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5105    month       = jan,
5106    year        = 1987,
5107    pages       = {284-292},
5108}
5109
5110@incollection{POOL-T,
5111    keywords    = {objects, concurrency},
5112    contributer = {pabuhr@plg},
5113    author      = {Pierre America},
5114    title       = {POOL-T: A Parallel Object-Oriented Language},
5115    booktitle   = {Object-Oriented Concurrent Programming},
5116    publisher   = {The MIT Press},
5117    year        = 1987,
5118    pages       = {199-220},
5119    editor      = {Akinori Yonezawa and Mario Tokoro}
5120}
5121
5122@article{Hardgrave76,
5123    keywords    = {positional, keyword, parameters, arguments},
5124    contributer = {pabuhr@plg},
5125    author      = {W. T. Hardgrave},
5126    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
5127    journal     = sigplan,
5128    volume      = 11,
5129    number      = 5,
5130    month       = may,
5131    year        = 1976,
5132    pages       = {52-58},
5133}
5134
5135@book{PowerPC,
5136    key         = {PowerPC processor},
5137    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5138    publisher   = {Freescale Semiconductor},
5139    volume      = {MPCFPE32B},
5140    edition     = {Rev. 3},
5141    month       = 9,
5142    year        = 2005,
5143}
5144
5145@article{Ada:preliminary,
5146    keywords    = {Ada},
5147    contributer = {pabuhr@plg},
5148    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5149                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5150                   and John G. P. Barnes and Olivier Roubine},
5151    title       = {Preliminary {Ada} Reference Manual},
5152    journal     = sigplan,
5153    volume      = 14,
5154    number      = 6,
5155    month       = jun,
5156    year        = 1979,
5157    note        = {Part A},
5158}
5159
5160@techreport{Forsythe,
5161    author      = {John C. Reynolds},
5162    title       = {Preliminary Design of the Programming Language {Forsythe}},
5163    institution = {Carnegie Mellon University},
5164    number      = {CMU-CS-88-159},
5165    month       = jun,
5166    year        = 1988,
5167}
5168
5169@article{PRESTO,
5170    keywords    = {concurrency, threads},
5171    contributer = {dgharriss@plg},
5172    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5173    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
5174    journal     = spe,
5175    volume      = 18,
5176    number      = 8,
5177    month       = aug,
5178    year        = 1988,
5179    pages       = {713-732}
5180}
5181
5182@book{Ben-Ari82,
5183    keywords    = {concurrency, parallel, programming languages},
5184    contributer = {pabuhr@plg},
5185    author      = {Mordechai Ben-Ari},
5186    title       = {Principles of Concurrent Programming},
5187    publisher   = {Prentice-Hall International},
5188    address     = {Englewood Cliffs},
5189    year        = 1982,
5190}
5191
5192@book{Tennent81,
5193    author      = {R. D. Tennent},
5194    title       = {Principles of Programming Languages},
5195    publisher   = {Prentice-Hall International},
5196    address     = {Englewood Cliffs},
5197    year        = 1981,
5198    series      = {Series in Computer Science}
5199}
5200
5201@article{Lister77,
5202    keywords    = {monitors, nested monitor calls},
5203    contributer = {pabuhr@plg},
5204    author      = {Andrew Lister},
5205    title       = {The Problem of Nested Monitor Calls},
5206    journal     = osr,
5207    volume      = 11,
5208    number      = 3,
5209    month       = jul,
5210    year        = 1977,
5211    pages       = {5-7},
5212}
5213
5214@article{psa:persistence,
5215    keywords    = {persistence, first-class procedures, closure, PS-Algol,
5216        Abstract Data Types},
5217    contributer = {gjditchfield@plg},
5218    author      = {Malcolm P. Atkinson and Ronald Morrison},
5219    title       = {Procedures as Persistent Data Objects},
5220    journal     = toplas,
5221    volume      = {7},    number = {4},
5222    pages       = {539-559},
5223    month       = oct, year = 1985,
5224    comment     = {
5225        PS-Algol has ``structures'', accessible only through ``pntrs''.
5226        Pntrs can refer to any type of structure.  Field references involve
5227        a run-time check.  This, plus first-class procedures, can simulate
5228        abstract data types.  Procedure variables operating on pntrs
5229        simulate ADT operations.  A block defines a structure to implement
5230        the ADT, and assigns procedures to the variables.  Functions
5231        returning structures containing procedures  simulate multiple
5232        implementations and parameterized ADTs.
5233
5234        An outer procedure that returns a procedure that contains
5235        (non-local) references to the outer procedure's parameters
5236        implements partial evaluation.
5237
5238        Modules can be simulated like ADT's.  The module itself is a
5239        structure instance that is placed in persistent storage, and the
5240        module is imported by fetching it from the persistent store.
5241        Multiple instances of modules are easy.  Installation of new
5242        versions can be done by replacing the version in the database.
5243    }
5244}
5245
5246@article{Procol89,
5247    keywords    = {active objects, object-oriented languages,
5248        object-based languages, explicit per-object protocol},
5249    contributer = {akgoel@plg},
5250    author      = {Jan van den Bos and Chris Laffra},
5251    title       = {PROCOL: A Parallel Object Language with Protocols},
5252    journal     = sigplan,
5253    volume      = 24,
5254    number      = 10,
5255    month       = oct,
5256    year        = 1989,
5257    pages       = {95-102},
5258    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5259    abstract    = {},
5260}
5261
5262@book{Butenhof97,
5263    keywords    = {PThreads, concurrency},
5264    contributer = {pabuhr@plg},
5265    author      = {David R. Butenhof},
5266    title       = {Programming with {POSIX} Threads},
5267    publisher   = {Addison-Wesley},
5268    address     = {Boston},
5269    series      = {Professional Computing},
5270    year        = 1997,
5271}
5272
5273@book{SETL,
5274    keywords    = {SETL},
5275    contributer = {pabuhr@plg},
5276    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5277    title       = {Programming with Sets: An Introduction to {SETL}},
5278    publisher   = {Springer},
5279    year        = 1986,
5280}
5281
5282@book{Genuys68,
5283    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
5284    contributer = {pabuhr@plg},
5285    editor      = {F. Genuys},
5286    title       = {Programming Languages},
5287    publisher   = {Academic Press},
5288    address     = {London, New York},
5289    year        = 1968,
5290    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5291}
5292
5293@manual{ANSI99:C,
5294    keywords    = {ANSI C 99},
5295    contributer = {pabuhr@plg},
5296    title       = {Programming Languages -- {C}},
5297    organization= {International Standard ISO/IEC 9899:1999 (E)},
5298    publisher   = {American National Standards Institute},
5299    address     = {www.ansi.org},
5300    year        = 1999,
5301}
5302
5303@manual{ANSI98:C++,
5304    keywords    = {ANSI C++ 98},
5305    contributer = {pabuhr@plg},
5306    key         = {C++98},
5307    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5308    organization= {International Standard ISO/IEC 14882:1998 (E)},
5309    publisher   = {American National Standards Institute},
5310    address     = {www.ansi.org},
5311    year        = 1998,
5312}
5313
5314@manual{ANSI14:C++,
5315    keywords    = {ISO/IEC C++ 14},
5316    contributer = {pabuhr@plg},
5317    key         = {C++14},
5318    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5319    edition     = {4th},
5320    organization= {International Standard ISO/IEC 14882:2014 (E)},
5321    publisher   = {International Standard Organization},
5322    address     = {http://www.iso.org},
5323    year        = 2014,
5324}
5325
5326@manual{MS:VisualC++,
5327    keywords    = {Microsoft Visual C++},
5328    contributer = {pabuhr@plg},
5329    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5330    organization= {Microsoft Corporation},
5331    year        = 2002,
5332    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
5333}
5334
5335@article{HasselBring00,
5336    keywords    = {concurrency, prototyping},
5337    contributer = {pabuhr@plg},
5338    author      = {Wilhelm Hasselbring},
5339    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
5340    journal     = acmcs,
5341    volume      = 32,
5342    number      = 1,
5343    month       = mar,
5344    year        = 2000,
5345    pages       = {43-79},
5346}
5347
5348@article{LLgen,
5349    keywords    = {ll(1), parser generator, separate compilation},
5350    contributer = {gjditchfield@plg},
5351    author      = {Dick Grune and Ceriel J. J. Jacobs},
5352    title       = {A Programmer-friendly LL(1) Parser Generator},
5353    journal     = spe,
5354    month       = jan, year = 1988,
5355    volume      = 18, number = 1, pages = {29-33},
5356    comment     = {
5357        LLgen generates C-language recursive-descent parsers.  The input
5358        contains procedure-like rules with alternation and repetition
5359        constructs on the right, and (typed) parameters on the left.
5360        C actions are specified between items in the right side.
5361        Alternation and repetition (reduce and shift) conflicts can be
5362        resolved statically or at run time.
5363
5364        A grammar can be specified in several files.  All files must be
5365        submitted to LLgen at once, but if the C file generated is no
5366        different from the old version, then the old version is not
5367        replaced and hence need not be recompiled, which saves lots of
5368        time.
5369
5370        When an incorrect token is found, the automatic error recovery
5371        algorithm discards tokens until an ``acceptable'' token is found;
5372        if the acceptable token is not correct, a correct one is inserted.
5373    }
5374}
5375
5376@techreport{russell,
5377    keywords    = {Russell},
5378    contributer = {gjditchfield@plg},
5379    author      = {H. Boehm and A. Demers and J. Donahue},
5380    title       = {A Programmer's Introduction to Russell},
5381    institution = {Rice University},
5382    year        = 1985,
5383    number      = {85-16}
5384}
5385
5386@techreport{PDM89,
5387    keywords    = {existential types, universal types},
5388    contributer = {gjditchfield@plg},
5389    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5390    title       = {Programming in Higher-Order Typed Lambda Calculi},
5391    institution = {School of Computer Science, Carnegie Mellon University},
5392    year        = 1989,
5393    address     = {Pittsburg, PA 15213-3890},
5394    month       = mar, number = {CMU-CS-89-111},
5395    abstract    = {
5396        This tutorial presents a hierarchy of increasingly powerful
5397        languages, beginning with Church's simply typed
5398        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5399        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5400        fragment of Girard's \(\omega\)-order polymorphic
5401        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
5402        the unusual style of programming that arises in these languages,
5403        where all functions are total and the primary control construct is
5404        iteration rather than general recursion.
5405    }
5406}
5407
5408@book{Modula-2,
5409    keywords    = {modules, coroutines},
5410    contributer = {pabuhr},
5411    author      = {Niklaus Wirth},
5412    title       = {Programming in Modula-2},
5413    publisher   = {Springer},
5414    address     = {New York},
5415    year        = 1988,
5416    edition     = {4th},
5417    series      = {Texts and Monographs in Computer Science},
5418}
5419
5420@manual{Ada,
5421    keywords    = {Ada, packages, tasks, exceptions},
5422    contributer = {pabuhr@plg},
5423    title       = {The Programming Language {Ada}: Reference Manual},
5424    organization= {United States Department of Defense},
5425    edition     = {{ANSI/MIL-STD-1815A-1983}},
5426    month       = feb,
5427    year        = 1983,
5428    note        = {Springer, New York},
5429}
5430
5431@manual{ada:old,
5432    keywords    = {Ada, packages, tasks, exceptions},
5433    contributer = {gjditchfield@plg},
5434    title       = {The Programming Language {Ada}: Reference Manual},
5435    organization= {United States Department of Defense},
5436    publisher   = {Springer},
5437    year        = 1981
5438}
5439
5440@book{Ghezzi,
5441    keywords    = {},
5442    author      = {Carlo Ghezzi and Mehdi Jazayeri},
5443    title       = {Programming Language Concepts},
5444    publisher   = {Wiley},
5445    year        = 1982
5446}
5447
5448@article{ConcurrentPascal,
5449    keywords    = {Concurrent Pascal},
5450    contributer = {pabuhr@plg},
5451    author      = {Per {Brinch Hansen}},
5452    title       = {The Programming Language Concurrent Pascal},
5453    journal     = ieeese,
5454    volume      = 2,
5455    month       = jun,
5456    year        = 1975,
5457    pages       = {199-206}
5458}
5459
5460@phdthesis{Buhr85:thesis,
5461    keywords    = {},
5462    contributer = {pabuhr@plg},
5463    author      = {P. A. Buhr},
5464    title       = {A Programming System},
5465    school      = {University of Manitoba},
5466    year        = {1985}
5467}
5468
5469@techreport{pierce91,
5470    keywords    = {typed lambda calculus},
5471    contributer = {gjditchfield@plg},
5472    author      = {Benjamin C. Pierce},
5473    title       = {Programming with Intersection Types, Union Types, and Polymorphism},
5474    institution = {Carnegie Mellon University},
5475    year        = 1991,
5476    month       = feb, number = "CMU-CS-91-106",
5477    annote      = {
5478        Discusses a typed lambda calculus with
5479        \begin{itemize}
5480        \item
5481        Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
5482        \tau_i\) for all \(i\).
5483        \item
5484        Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
5485        and with implicit coercions from \(tau_i\) to \(\tau\).  Only
5486        operations valid for both element types can be applied to the
5487        union; there are no projections.  Union types are to variant
5488        records as set union is to disjoint set union.
5489        \item
5490        Function types and universal quantification, with subtyping rules.
5491        When functions and arguments intersections, the result of
5492        application is the intersection of all valid combinations.
5493        \item
5494        Distribution rules for combinations of types.
5495        \item
5496        "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
5497        union, has type \(\tau\) if \(e'\) has that type with \(x\) having
5498        every element type of the union.
5499        \item
5500        "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
5501        typechecks \(e\) with \(t\) bound to each choice, and intersects
5502        the results.
5503        \end{itemize}
5504
5505        Examples include: type of "natural" numbers, treated as a union of
5506        "zero" and "positive" types; default parameters, faked by using an
5507        argument that is an intersection of a data type and a function
5508        taking an explicit argument.
5509
5510        Unions can be mostly faked, according to Mitchell:
5511        \[\tau_1\vee\tau_2 \equiv
5512             \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
5513    }
5514}
5515
5516@article{promises,
5517    keywords    = {futures, Argus, call streams, rpc},
5518    contributer = {gjditchfield@plg},
5519    author      = {Barbara Liskov and Liuba Shrira},
5520    title       = {Promises: Linguistic Support for Efficient Asynchronous
5521          Procedure Calls in Distributed Systems},
5522    journal     = sigplan,
5523    year        = 1988,
5524    month       = jul, volume = 23, number = 7, pages = {260-267},
5525    note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language
5526         Design and Implementation},
5527    abstract    = {
5528        This paper deals with the integration of an efficient asynchronous
5529        remote procedure call mechanism into a programming language.  It
5530        describes a new data type called a {\em promise} that was designed
5531        to support asynchronous calls.  Promises allow a caller to run in
5532        parallel with a call and to pick up the results of the call,
5533        including any exceptions it raises, in a convenient and type-safe
5534        manner.  The paper also discusses efficient composition of
5535        sequences of asynchronous calls to different locations in a
5536        network.
5537    }
5538}
5539
5540@article{Cook89,
5541    keywords    = {},
5542    contributer = {gjditchfield@plg},
5543    author      = {W. R. Cook},
5544    title       = {A Proposal for Making {Eiffel} Type-safe},
5545    journal     = {The Computer Journal},
5546    year        = 1989,
5547    volume      = 32, number = 4, pages = {305-311},
5548    abstract    = {
5549       
5550    }
5551}
5552
5553@inproceedings{Foxall79,
5554    keywords    = {},
5555    contributer = {pabuhr@plg},
5556    author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
5557    title       = {{PROTEL}: A High Level Language for Telephony},
5558    booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
5559    month       = nov,
5560    year        = 1979,
5561    pages       = {193-197},
5562}
5563
5564@techreport{PS-Algol,
5565    keywords    = {algol, persistence},
5566    contributer = {pabuhr@plg},
5567    key         = {PS-Algol},
5568    title       = {The {PS-Algol} Reference Manual, 4th Ed.},
5569    author      = {},
5570    institution = {University of Glasgow and St. Andrews, Scotland},
5571    number      = {PPRR 12},
5572    month       = jun,
5573    year        = 1987,
5574}
5575
5576@manual{Python,
5577    keywords    = {Python},
5578    contributer = {pabuhr},
5579    title       = {Python Reference Manual, Release 2.5},
5580    author      = {Guido van Rossum},
5581    organization= {Python Software Foundation},
5582    month       = sep,
5583    year        = 2006,
5584    note        = {Fred L. Drake, Jr., editor},
5585}
5586
5587% Q
5588
5589@article{Grossman06,
5590    keywords    = {Cyclone, existential types, polymorphism, type variables},
5591    contributer = {a3moss@plg},
5592    author      = {Dan Grossman},
5593    title       = {Quantified Types in an Imperative Language},
5594    journal     = toplas,
5595    issue_date  = {May 2006},
5596    volume      = {28},
5597    number      = {3},
5598    month       = may,
5599    year        = 2006,
5600    issn        = {0164-0925},
5601    pages       = {429-475},
5602    url         = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
5603    doi         = {10.1145/1133651.1133653},
5604    acmid       = {1133653},
5605    publisher   = {ACM},
5606    address     = {New York, NY, USA},
5607}
5608
5609@article{Hoare61,
5610    keywords    = {quick sort},
5611    contributer = {pabuhr@plg},
5612    author      = {C. A. R. Hoare},
5613    title       = {Algorithms 63/64: Partition/Quicksort},
5614    journal     = cacm,
5615    volume      = 4,
5616    number      = 7,
5617    month       = jul,
5618    year        = 1961,
5619    pages       = {321},
5620}
5621
5622% R
5623
5624@article{Ada:rationale:preliminary,
5625    keywords    = {Ada},
5626    contributer = {pabuhr@plg},
5627    author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
5628                   J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
5629    title       = {Rationale for the Design of the {ADA} Programming Language},
5630    journal     = sigplan,
5631    volume      = 14,
5632    number      = 6,
5633    month       = jun,
5634    year        = 1979,
5635    note        = {Part B},
5636}
5637
5638@book{Ada:rationale,
5639    keywords    = {Ada},
5640    contributer = {pabuhr@plg},
5641    author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
5642    title       = {Rationale for the Design of the {ADA} Programming Language},
5643    publisher   = {Under Secretary of Defense, Research and Engineering},
5644    year        = 1986,
5645    address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
5646}
5647
5648@manual{Ada95,
5649    keywords    = {Ada},
5650    contributer = {pabuhr@plg},
5651    title       = {{A}da Reference Manual},
5652    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5653    organization= {Intermetrics, Inc.},
5654    month       = dec,
5655    year        = 1995,
5656    note        = {Language and Standards Libraries}
5657}
5658
5659@manual{Ada12,
5660    keywords    = {Ada},
5661    contributer = {pabuhr@plg},
5662    title       = {Programming languages -- {Ada}},
5663    edition     = {3rd},
5664    organization= {International Standard ISO/IEC 1989:2014},
5665    publisher   = {International Standard Organization},
5666    address     = {http://www.iso.org},
5667    year        = 2012,
5668}
5669
5670@manual{Ada95:annotated,
5671    keywords    = {Ada},
5672    contributer = {pabuhr@plg},
5673    title       = {Annotated {A}da Reference Manual},
5674    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5675    organization = {Intermetrics, Inc.},
5676    month       = dec,
5677    year        = 1995,
5678    note        = {Language and Standards Libraries}
5679}
5680
5681@book{JavaRT00,
5682    keywords    = {real time, draft},
5683    contributer = {pabuhr@plg},
5684    author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
5685    title       = {The Real-Time Specification for {J}ava},
5686    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
5687    publisher   = {Addison-Wesley},
5688    address     = {Boston},
5689    year        = 2000,
5690}
5691
5692@manual{JavaRT99,
5693    organization= {Real Time for Java Experts Group},
5694    address     = {{\small\textsf{http://\-www.rtj.org}}},
5695    month       = sep,
5696    year        = 1999,
5697}
5698
5699@article{Robinson48,
5700    keywords    = {recursion, Ackermann function},
5701    contributer = {pabuhr@plg},
5702    author      = {Raphael Mitchel Robinson},
5703    title       = {Recursion and Double Recursion},
5704    publisher   = {American Mathematical Society},
5705    journal     = {Bulletin of the American Mathematical Society},
5706    volume      = 54,
5707    pages       = {987-993},
5708    year        = 1948,
5709}
5710
5711@article{Dijkstra:red,
5712    keywords    = {ada},
5713    contributer = {gjditchfield@plg},
5714    author      = {Edsger W. Dijkstra},
5715    title       = {On the RED Language submitted to the DoD},
5716    journal     = sigplan,
5717    year        = 1978,
5718    month       = oct,
5719    volume      = 13,
5720    number      = 10,
5721    pages       = {27-32},
5722}
5723
5724@article{RemoteRendezvous,
5725    keywords    = {rendezvous, concurrency},
5726    contributer = {pabuhr@plg},
5727    author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
5728    title       = {Remote Rendezvous},
5729    journal     = spe,
5730    month       = oct,
5731    year        = 1987,
5732    volume      = 17,
5733    number      = 10,
5734    pages       = {741-755}
5735}
5736
5737@article{Euclid,
5738    keywords    = {Euclid},
5739    contributer = {pabuhr@plg},
5740    author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
5741    title       = {Report on the Programming Language Euclid},
5742    journal     = sigplan,
5743    volume      = 12,
5744    number      = 2,
5745    month       = feb,
5746    year        = 1977,
5747    pages       = {1-79}
5748}
5749
5750@techreport{LOGLAN88,
5751    keywords    = {LOGLAN},
5752    contributer = {pabuhr@plg},
5753    author      = {Boleslaw Ciesielski and Antoni Kreczmar and Marek Lao and Andrzej Litwiniuk and Teresa Przytycka and Andrzej Salwicki and Jolanta Warpechowska and Marek Warpechowski and Andrzej Szalas and Danuta Szczepanska--Wasersztrum},
5754    title       = {Report on the Programming Language LOGLAN'88},
5755    institution = {Institute of Informatics, University of Warsaw},
5756    address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
5757    number      = {},
5758    month       = dec,
5759    year        = 1988,
5760}
5761
5762@mastersthesis{Schluntz17,
5763    author      = {Robert Schluntz},
5764    title       = {Resource Management and Tuples in C$\mathbf{\forall}$},
5765    school      = {School of Computer Science, University of Waterloo},
5766    year        = 2017,
5767    address     = {Waterloo, Ontario, Canada, N2L 3G1},
5768    note        = {[[unpublished]]}
5769}
5770
5771@article{FH91,
5772    keywords    = {lcc},
5773    contributer = {gjditchfield@plg},
5774    author      = {Christopher W. Fraser and David R. Hanson},
5775    title       = {A Retargetable Compiler for {ANSI} {C}},
5776    journal     = sigplan,
5777    year        = 1991,
5778    month       = oct, volume = 26, number = 10, pages = {29-43},
5779    abstract    = {
5780        {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
5781        the VAX, Motorola 68020, SPARC, and MIPS are in production use at
5782        Princeton University and at AT\&T Bell Laboratories.  With a few
5783        exceptions, little about {\tt lcc} is unusual---it integrates
5784        several well engineered, existing techniques---but it is smaller
5785        and faster than most other C compilers, and it generates code of
5786        comparable quality.  {\tt lcc}'s target-independent front end
5787        performs a few simple, but effective, optimizations that contribute
5788        to good code; examples include simulating register declarations and
5789        partitioning switch statements into dense tables.  It also
5790        implements target-independent function tracing and expression-level
5791        profiling.
5792    }
5793}
5794
5795@article{Algol68revised,
5796    keywords    = {},
5797    contributer = {gjditchfield@plg},
5798    author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
5799        C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
5800        Meertens and R. G. Fisher},
5801    title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
5802    journal     = sigplan,
5803    year        = 1977,
5804    month       = may,
5805    volume      = 12,
5806    number      = 5,
5807    pages       = {1-70}
5808}
5809
5810@article{scheme,
5811    keywords    = {},
5812    contributer = {gjditchfield@plg},
5813    author      = {Jonathan Rees and William Clinger},
5814    title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
5815    journal     = sigplan,
5816    year        = 1986,
5817    month       = dec,
5818    volume      = 21,
5819    number      = 12,
5820    pages       = {37-79},
5821}
5822
5823@article{scheme5,
5824    keywords    = {scheme},
5825    contributer = {pabuhr@plg},
5826    author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
5827                   R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
5828                   G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
5829    title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
5830    journal     = sigplan,
5831    year        = 1998,
5832    month       = sep,
5833    volume      = 33,
5834    number      = 9,
5835    pages       = {26-76},
5836}
5837
5838@manual{Rust,
5839    keywords    = {Rust programming language},
5840    contributer = {pabuhr@plg},
5841    title       = {The {Rust} Programming Language},
5842    organization= {The Rust Project Developers},
5843    year        = 2015,
5844    note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang.org/\-reference.html}},
5845}
5846
5847% S
5848
5849@manual{Scala,
5850    keywords    = {Scala programming language},
5851    contributer = {pabuhr@plg},
5852    title       = {{Scala} Language Specification, Version 2.11},
5853    organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
5854    year        = 2016,
5855    note        = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
5856}
5857
5858@inproceedings{Michael04,
5859    keywords    = {lock free, dynamic memory allocation},
5860    contributer = {pabuhr@plg},
5861    author      = {Maged M. Michael},
5862    title       = {Scalable Lock-free Dynamic Memory Allocation},
5863    booktitle   = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
5864    location    = {Washington DC, USA},
5865    publisher   = {ACM},
5866    address     = {New York, NY, USA},
5867    volume      = 39,
5868    year        = 2004,
5869    month       = jun,
5870    pages       = {35-46},
5871}
5872
5873@article{Anderson92,
5874    keywords    = {light-weight tasks},
5875    contributer = {pabuhr@plg},
5876    author      = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
5877    title       = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
5878    journal     = tocs,
5879    volume      = 10,
5880    number      = 1,
5881    month       = feb,
5882    year        = 1992,
5883    pages       = {53-79},
5884}
5885
5886@manual{SELF,
5887    keywords    = {programming language, obect-oriented, polymorphism},
5888    contributer = {pabuhr@plg},
5889    author      = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
5890                   and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
5891    title       = {The {SELF} 3.0 Programmer's Reference Manual},
5892    organization= {Sun Microsystems, Inc., and Stanford University},
5893    year        = 1993,
5894}
5895
5896@inproceedings{Cardelli84,
5897    keywords    = {subtypes, recursive types, records, variants, object oriented},
5898    contributer = {gjditchfield@plg},
5899    author      = {Luca Cardelli},
5900    title       = {A Semantics of Multiple Inheritance},
5901    booktitle   = {Semantics of Data Types},
5902    year        = 1984,
5903    pages       = {51-67},
5904    editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
5905    publisher   = {Springer},
5906    note        = {Lecture Notes in Computer Science v. 173},
5907}
5908
5909@techreport{Adve95,
5910    keywords    = {shared memory, consistency models},
5911    contributer = {pabuhr@plg},
5912    author      = {Sarita V. Adve and Kourosh Gharachorloo},
5913    title       = {Shared Memory Consistency Models: A Tutorial},
5914    institution = {Western Research Laboratory},
5915    address     = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
5916    number      = {7},
5917    month       = sep,
5918    year        = 1995,
5919    note        = {\href{http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf}{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-WRL-95-7.pdf}}, Reprinted in \cite{Adve95reprint}.},
5920}
5921
5922@article{Adve95reprint,
5923    keywords    = {shared memory, consistency models},
5924    contributer = {pabuhr@plg},
5925    author      = {Sarita V. Adve and Kourosh Gharachorloo},
5926    journal     = {Computer},
5927    title       = {Shared Memory Consistency Models: A Tutorial},
5928    month       = dec,
5929    year        = 1996,
5930    volume      = 29,
5931    number      = 12,
5932    pages       = {66-76},
5933}
5934
5935@inproceedings{Howard76b,
5936    keywords    = {monitors},
5937    contributer = {pabuhr@plg},
5938    author      = {J. H. Howard},
5939    title       = {Signaling in Monitors},
5940    booktitle   = {Proceedings Second International Conference Software Engineering},
5941    address     = {San Francisco, U.S.A},
5942    publisher   = {IEEE Computer Society},
5943    month       = oct,
5944    year        = 1976,
5945    pages       = {47-52}
5946}
5947
5948@techreport{Schemenauer01,
5949    keywords    = {Phthon, generator, coroutine},
5950    contributer = {pabuhr@plg},
5951    author      = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
5952    title       = {Simple Generators},
5953    month       = may,
5954    year        = 2001,
5955    note        = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
5956}
5957
5958@inproceedings{Michael96,
5959    keywords    = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
5960    contributer = {pabuhr@plg},
5961    author      = {Maged M. Michael and Michael L. Scott},
5962    title       = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
5963    booktitle   = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
5964    series      = {PODC'96},
5965    year        = 1996