source: doc/bibliography/cfa.bib @ 17f27d40

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 17f27d40 was 17f27d40, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

work on conclusion and add references

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