source: doc/bibliography/cfa.bib @ 8d91e6a

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 8d91e6a was 4438281, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

update bibliography

  • Property mode set to 100644
File size: 226.7 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@string{acta="Acta Infomatica"}
12%  cacm: Communications of the ACM
13%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
14%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
15%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
16%  ipl: Information Processing Letters  jacm: Journal of the ACM
17%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
18%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
19%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
20%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
21%  toplas: ACM Trans. on Prog. Lang. & Sys.
22%  tcs: Theoretical Computer Science
23@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
24% @string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
25@string{ieeese="IEEE Transactions on Software Engineering"}
26% @string{ieeese="IEEE Trans. Softw. Eng."}
27@string{spe="Software---\-Practice and Experience"}
28% @string{spe="Softw. Pract. Exp."}
29@string{ccpe="Concurrency and Computation: Practice and Experience"}
30% @string{ccpe="Concurrency Comput. Pract. Exp."}
31@string{sigplan="SIGPLAN Notices"}
32% @string{sigplan="SIGPLAN Not."}
33@string{joop="Journal of Object-Oriented Programming"}
34% @string{joop="J. of Object-Oriented Program."}
35@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
36@string{osr="Operating Systems Review"}
37@string{pldi="Programming Language Design and Implementation"}
38@string{toplas="Transactions on Programming Languages and Systems"}
39@string{mathann="Mathematische Annalen"}
40% @string{mathann="Math. Ann."}
41
42% A
43
44@incollection{ABC++,
45    keywords    = {concurrency, parallel, distributed, C++},
46    contributer = {pabuhr@plg},
47    author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
48    title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
49    editor      = {Gregory V. Wilson and Paul Lu},
50    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
51    publisher   = {MIT Press},
52    address     = {New York},
53    series      = {Scientific and Engineering Computation Series},
54    year        = 1996,
55    pages       = {1-42},
56}
57
58@techreport{CL90abstract,
59    keywords    = {},
60    contributer = {gjditchfield@plg},
61    author      = {Luca Cardelli and Xavier Leroy},
62    title       = {Abstract Types and the Dot Notation},
63    institution = {Systems Research Center},
64    year        = 1990,
65    address     = {130 Lytton Avenue, Palo Alto, CA  94301},
66    number      = 56,
67    summary     = {
68        The existential types of Mitchell and Plotkin \cite{atet} model
69        abstract types, but their ``open'' notation is unlike the usual dot
70        notation used in programming languages.  This paper gives
71        translations between the ``open'' and ``dot'' forms, and suggests
72        extensions for nested and for parameterized abstractions.
73    }
74}
75
76@article{atet,
77    keywords    = {lambda calculus, polymorphism},
78    contributer = {gjditchfield@plg},
79    author      = {John C. Mitchell and Gordon D. Plotkin},
80    title       = {Abstract Types have Existential Type},
81    journal     = toplas,
82    year        = 1988,
83    month       = jul, volume = 10, number = 3, pages = {470-502},
84    abstract    = {
85        Abstract data type declarations appear in typed programming
86        languages like Ada, Alphard, CLU and ML.  This form of declaration
87        binds a list of identifiers to a type with associated operations, a
88        composite ``value'' we call a {\em data algebra}.  We use a
89        second-order typed lambda calculus SOL to show how data algebras
90        may be given types, passed as parameters, and returned as results of
91        function calls.  In the process, we discuss the semantics of
92        abstract data type declarations and review a connection between
93        typed programming languages and constructive logic.
94    }
95}
96
97@article{alphard:intro,
98    keywords    = {encapsulation, data abstraction},
99    contributer = {gjditchfield@plg},
100    author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
101    title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
102    journal     = ieeese,
103    year        = 1976,
104    month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
105    note        = {Reprinted in \cite{alphard}.},
106    abstract    = {
107        Alphard is a programming language whose goals include supporting
108        both the development of well-structured programs and the formal
109        verification of these programs.  This paper attempts to capture the
110        symbiotic influence of these two goals on the design of the
111        language.  To that end the language description is interleaved with
112        the presentation of a proof technique and discudssion of
113        programming methodology.  Examples to illustrate both the language
114        and the verification technique are included.
115    }
116}
117
118@book{Hilfinger83,
119    keywords    = {ada},
120    author      = {Paul N. Hilfinger},
121    title       = {Abstraction Mechanisms and Language Design},
122    publisher   = {MIT Press},
123    series      = {ACM Distinguished Dissertations},
124    year        = 1983,
125}
126
127@incollection{Lavender96,
128    author      = {R. Greg Lavender and Douglas C. Schmidt},
129    chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
130    title       = {Pattern Languages of Program Design 2},
131    editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
132    year        = 1996,
133    pages       = {483-499},
134    publisher   = {Addison-Wesley Longman Publishing},
135    address     = {Boston},
136}
137
138@article{Nierstrasz87,
139    keywords    = {Hybrid, active objects, object-oriented languages,
140                  object-based languages, delegation, concurrency},
141    contributer = {pabuhr@plg},
142    author      = {O. M. Nierstrasz},
143    title       = {Active Objects in {Hybrid}},
144    journal     = sigplan,
145    volume      = 22,
146    number      = 12,
147    month       = dec,
148    year        = 1987,
149    pages       = {243-253},
150    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
151    abstract    = {
152        Most object-oriented languages are strong on reusability or on
153        strong-typing, but weak on concurrency.  In response to this gap,
154        we are developing {\it Hybrid}, an object-oriented language in which
155        objects are the active entities.  Objects in Hybrid are organized
156        into {\it domains}, and concurrent executions into {\it activities}.
157        All object communications are based on remote procedure calls.
158        Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
159        this the mechanisms of {\it delegation\/} and {\it delay queues\/}
160        are added to enable switching and triggering of activities.
161        Concurrent subactivities and atomic actions are provided for
162        compactness and simplicity.  We show how solutions to many important
163        concurrent problems [sic], such as pipelining, constraint management
164        and ``administration'' can be compactly expressed using these
165        mechanisms.
166   },
167   comment      = {Mentions Thoth in reference to delegation}
168}
169
170@book{Actors,
171    keywords    = {actors, concurrency},
172    contributer = {pabuhr@plg},
173    author      = {Gul A. Agha},
174    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
175    publisher   = {MIT Press, Cambridge},
176    year        = 1986
177}
178
179@article{polymorphImpl,
180    keywords    = {Napier88},
181    contributer = {gjditchfield@plg},
182    author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
183    title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
184    journal     = toplas,
185    year        = 1991,
186    month       = jul,
187    volume      = 13,
188    number      = 3,
189    pages       = {342-371},
190    abstract    = {
191        Polymorphic abstraction provides the ability to write programs that
192        are independent of the form of the data over which they operate.
193        There are a number of different categories of polymorphic
194        expression---ad hoc and universal, which includes parametric and
195        inclusion---all of which have many advantages in terms of code
196        reuse and software economics.  It has proved difficult to provide
197        efficient implementations of polymorphism.  Here, we address this
198        problem and describe a new technique that can implement all forms
199        of polymorphism, use a conventional machine architecture, and
200        support nonuniform data representations.  Furthermore, the method
201        ensures that any extra cost of implementation applies to
202        polymorphic forms only, and allows such polymorphic forms to
203        persist over program invocations.
204    },
205    summary     = {
206        They give three ways to implement polymorphism: {\em textual
207        polymorphism}, which seems to be template instantiation, {\em
208        uniform polymorphism}, which they explain badly, and {\em tagged
209        polymorphism}, where object code performs type tests.
210
211        They use first-class procedures to implement polymorphism: routines
212        with type parameters are implemented as curried routines that
213        return a nested routine that refers to the type parameter.
214    }
215}
216
217@article{dim:ada,
218    keywords    = {Dimensional Analysis, Ada},
219    contributer = {gjditchfield@plg},
220    author      = {Paul N. Hilfinger},
221    title       = {An {Ada} Package for Dimensional Analysis},
222    journal     = toplas,
223    month       = apr,
224    year        = 1988,
225    volume      = 10,
226    number      = 2,
227    pages       = {189-203},
228}
229
230@mastersthesis{Younger91,
231    keywords    = {concurrency, C++, postponing requests},
232    contributer = {pabuhr@plg},
233    author      = {Brian M. Younger},
234    title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
235    school      = {University of Waterloo},
236    year        = 1991,
237    address     = {Waterloo, Ontario, Canada, N2L 3G1},
238}
239
240@inproceedings{Buhr92c,
241    keywords    = {concurrency},
242    contributer = {pabuhr@plg},
243    author      = {Peter A. Buhr and Glen Ditchfield},
244    title       = {Adding Concurrency to a Programming Language},
245    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
246    organization= {USENIX Association},
247    address     = {Portland, Oregon, U.S.A.},
248    month       = aug,
249    year        = 1992,
250    pages       = {207-224},
251}
252
253@article{Buhr89b,
254    keywords    = {concurrency, C++},
255    contributer = {pabuhr@plg},
256    author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
257    title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
258    journal     = sigplan,
259    volume      = 24,
260    number      = 4,
261    month       = apr,
262    year        = 1989,
263    pages       = {18-21},
264    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
265}
266
267@article{Knuth66,
268    keywords    = {N-thread software-solution mutual exclusion},
269    contributer = {pabuhr@plg},
270    author      = {Donald E. Knuth},
271    title       = {Additional Comments on a Problem in Concurrent Programming Control},
272    journal     = cacm,
273    month       = may,
274    year        = 1966,
275    volume      = 9,
276    number      = 5,
277    pages       = {321-322},
278    note        = {Letter to the Editor}
279}
280
281@article{DeBruijn67,
282    keywords    = {N-thread software-solution mutual exclusion},
283    contributer = {pabuhr@plg},
284    author      = {Nicolaas Govert de Bruijn},
285    title       = {Additional Comments on a Problem in Concurrent Programming Control},
286    journal     = cacm,
287    month       = mar,
288    year        = 1967,
289    volume      = 10,
290    number      = 3,
291    pages       = {137-138},
292    note        = {letter to the Editor}
293}
294
295@phdthesis{Krischer10,
296    author      = {Roy Krischer},
297    title       = {Advanced Concepts in Asynchronous Exception Handling},
298    school      = {University of Waterloo},
299    year        = 2010,
300    month       = dec,
301    address     = {Waterloo, Ontario, Canada, N2L 3G1},
302    optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
303    note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
304}
305
306@article{Buhr00a,
307    keywords    = {exception handling},
308    contributer = {pabuhr@plg},
309    author      = {Peter A. Buhr and W. Y. Russell Mok},
310    title       = {Advanced Exception Handling Mechanisms},
311    journal     = ieeese,
312    volume      = 26,
313    number      = 9,
314    month       = sep,
315    year        = 2000,
316    pages       = {820-836},
317}
318
319@book{Richter97,
320    keywords    = {Win32, threads},
321    author      = {Jeffrey M. Richter},
322    title       = {Advanced Windows},
323    publisher   = {Microsoft Press},
324    year        = 1997,
325    edition     = {3rd},
326}
327
328@article{Francez77,
329    keywords    = {parameter passing, named/positional arguments},
330    contributer = {pabuhr@plg},
331    author      = {Nissim Francez},
332    title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
333    journal     = cacm,
334    volume      = 20,
335    number      = 8,
336    month       = aug,
337    year        = 1977,
338    pages       = {604-605},
339}
340
341@manual{Akka,
342    keywords    = {Akka actor model},
343    contributer = {pabuhr@plg},
344    title       = {{A}kka {S}cala Documentation, Release 2.4.11},
345    organization= {Lightbend Inc.},
346    month       = sep,
347    year        = 2016,
348    note        = {\href{http://doc.akka.io/docs/akka/2.4/AkkaScala.pdf}{http://\-doc.akka.io/\-docs/\-akka/\-2.4/\-AkkaScala.pdf}},
349}
350
351@article{Algol60,
352    keywords    = {Algol60},
353    contributer = {pabuhr@plg},
354    author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
355                   J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
356                   and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
357    title       = {Revised Report on the Algorithmic Language Algol 60},
358    editor      = {Peter Nauer},
359    journal     = cacm,
360    volume      = 6,
361    number      = 1,
362    month       = jan,
363    year        = 1963,
364    pages       = {1-17},
365}
366
367@article{Mellor-Crummey91,
368    keywords    = {spin locks, compare-and-swap, barriers},
369    contributer = {pabuhr@plg},
370    author      = {John M. Mellor-Crummey and Michael L. Scott},
371    title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
372    journal     = tocs,
373    volume      = 9,
374    number      = 1,
375    month       = feb,
376    year        = 1991,
377    pages       = {21-65},
378}
379
380@article{Cormack81,
381    keywords    = {},
382    contributer = {gjditchfield@plg},
383    author      = {Gordon V. Cormack},
384    title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
385    journal     = sigplan,
386    year        = 1981,
387    month       = feb, volume = 16, number = 2, pages = {48-52},
388    comment     = {
389        A one-pass, top-down algorithm for overload resolution.  Input is a
390        parse tree and the desired result type, and output is the number of
391        solutions.  For each overloading of the root identifier with a
392        matching parameter list, recursively solve for each parameter for
393        the corresponding argument type---there should be one solution.
394    }
395}
396
397@book{Raynal86,
398    keywords    = {mutual exclusion, locks},
399    contributer = {pabuhr@plg},
400    author      = {M. Raynal},
401    title       = {Algorithms for Mutual Exclusion},
402    publisher   = {MIT Press},
403    address     = {Cambridge},
404    series      = {Scientific Computation Series},
405    year        = 1986,
406    note        = {Translated by D. Beeson},
407}
408
409@incollection{Gidenstam05,
410    keywords    = {lock free, dynamic memory allocation},
411    contributer = {pabuhr@plg},
412    author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
413    title       = {Allocating Memory in a Lock-free Manner},
414    editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
415    booktitle   = {Algorithms -- ESA 2005},
416    pages       = {329-342},
417    publisher   = {Springer},
418    address     = {New York},
419    year        = 2005,
420    volume      = 3669,
421    series      = {Lecture Notes in Computer Science},
422}
423
424@book{Sites92,
425    keywords    = {computers, Alpha},
426    contributer = {pabuhr@plg},
427    editor      = {Richard L. Sites},
428    title       = {Alpha Architecture Reference Manual},
429    publisher   = {Digital Press, Burlington},
430    year        = 1992,
431}
432
433@book{alphard,
434    keywords    = {Parametric polymorphism, alphard, iterators, nested types},
435    contributer = {gjditchfield@plg},
436    key         = {Alphard},
437    editor      = {Mary Shaw},
438    title       = {{ALPHARD}: Form and Content},
439    publisher   = {Springer},
440    address     = {New York},
441    year        = 1981,
442    comment     = {Collection of papers about Alphard.}
443}
444
445@article{Kessels77,
446    keywords    = {monitors},
447    contributer = {pabuhr@plg},
448    author      = {Joep L. W. Kessels},
449    title       = {An Alternative to Event Queues for Synchronization in Monitors},
450    journal     = cacm,
451    volume      = 20,
452    number      = 7,
453    month       = jul,
454    year        = 1977,
455    pages       = {500-503},
456    annote      = {
457    }
458}
459
460@article{descr,
461    keywords    = {X2, subclasses, inheritance, parameterized classes},
462    contributer = {gjditchfield@plg},
463    author      = {David Sandberg},
464    title       = {An Alternative to Subclassing},
465    journal     = sigplan,
466    volume      = {21},    number = {11},
467    pages       = {424-428},
468    month       = nov, year = 1986,
469    comment     = {
470        The Smalltalk class hierarchy has three uses: factoring out code;
471        ``Abstraction superclasses'' such as Collection; rapid construction
472        of new classes by incremental change.
473
474        ``A descriptive class specifies a partial behavior by specifying a
475        set of procedure headings that describe what can be done with
476        instances of classes that belong to the descriptive class.''  An
477        ``instance'' statement declares a class to be an instance of a
478        descriptive class and defines the correspondence between
479        operations.  Procedures with descriptive class parameters take any
480        instance as arguments.  Descriptive classes can describe relations
481        like ``c is a collection with element type e'', but how such things
482        are used isn't explained.
483       
484        For each descriptive class used in a parameter list, an implicit
485        parameter is created that is passed a vector of procedures.
486    }
487}
488
489@incollection{Matsuoka93,
490    keywords    = {inheritance anomaly},
491    contributer = {pabuhr@plg},
492    author      = {Satoshi Matsuoka and Akinori Yonezawa},
493    title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
494    booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
495    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
496    publisher   = {MIT Press},
497    address     = {New York},
498    year        = 1993,
499    pages       = {107-150},
500}
501
502@article{Sinha00,
503    author      = {Saurabh Sinha and Mary Jean Harrold},
504    title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
505    journal     = ieeese,
506    year        = 2000,
507    month       = sep,
508    volume      = 26,
509    number      = 9,
510    pages       = {849--871},
511}
512
513@inproceedings{Robillard99,
514    author      = {Martin P. Robillard and Gail C. Murphy},
515    title       = {Analyzing Exception Flow in {J}ava Programs},
516    booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
517                   with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
518    year        = 1999,
519    pages       = {322--337},
520    isbn        = {3-540-66538-2},
521    location    = {Toulouse, France},
522    doi         = {http://doi.acm.org/10.1145/318773.319251},
523    publisher   = {Springer},
524    address     = {London, UK},
525}
526
527@book{C++,
528    keywords    = {C++, ANSI},
529    author      = {Margaret A. Ellis and Bjarne Stroustrup},
530    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
531    publisher   = {Addison-Wesley},
532    address     = {Boston},
533    year        = 1990,
534    edition     = {1st},
535}
536
537@book{APL,
538    keywords    = {APL},
539    contributer = {pabuhr@plg},
540    author      = {K. E. Iverson},
541    title       = {A Programming Language},
542    publisher   = {Wiley, New York},
543    year        = 1962
544}
545
546@article{PS-Algol:old,
547    author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
548    title       = {An Approach to Persistent Programming},
549    journal     = {The Computer Journal},
550    year        = 1983,
551    volume      = 26,
552    number      = 4,
553    pages       = {360-365},
554}
555
556@article{Kessels82,
557    keywords    = {concurrency, critical section},
558    contributer = {pabuhr@plg},
559    author      = {Joep L. W. Kessels},
560    title       = {Arbitration Without Common Modifiable Variables},
561    journal     = acta,
562    volume      = 17,
563    number      = 2,
564    month       = jun,
565    year        = 1982,
566    pages       = {135-141},
567}
568
569@article{Buhr95a,
570    keywords    = {concurrency, library approach},
571    contributer = {pabuhr@plg},
572    author      = {Peter A. Buhr},
573    title       = {Are Safe Concurrency Libraries Possible?},
574    journal     = cacm,
575    month       = feb,
576    year        = 1995,
577    volume      = 38,
578    number      = 2,
579    pages       = {117-120},
580}
581
582@book{ARMv7,
583    key         = {ARM processor},
584    title       = {ARM Architecture Reference Manual},
585    publisher   = {ARM},
586    volume      = {ARM DDI 0406C.b (ID072512)},
587    year        = 2012,
588}
589
590@book{Herlihy08,
591    contributer = {pabuhr@plg},
592    author      = {Herlihy, Maurice and Shavit, Nir},
593    title       = {The Art of Multiprocessor Programming},
594    year        = 2008,
595    isbn        = {0123705916, 9780123705914},
596    publisher   = {Morgan Kaufmann Publishers},
597    address     = {San Francisco},
598}
599
600@inproceedings{Chung10,
601    keywords    = {transactional memory, lock-free programming, x86 architecture},
602    contributer = {pabuhr@plg},
603    author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
604    title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
605    booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
606    series      = {MICRO '43},
607    year        = 2010,
608    pages       = {39--50},
609    numpages    = {12},
610    publisher   = {IEEE Computer Society},
611    address     = {Washington, DC, USA},
612}
613
614@article{Buhr94a,
615    keywords    = {assignment, parameter passing, multiple assignment},
616    contributer = {pabuhr@plg},
617    author      = {P. A. Buhr and David Till and C. R. Zarnke},
618    title       = {Assignment as the Sole Means of Updating Objects},
619    journal     = spe,
620    month       = sep,
621    year        = 1994,
622    volume      = 24,
623    number      = 9,
624    pages       = {835-870},
625}
626
627@inproceedings{Krischer08,
628    keywords    = {exception handling, asynchronous, blocked tasks},
629    contributer = {pabuhr@plg},
630    author      = {Roy Krischer and Peter A. Buhr},
631    title       = {Asynchronous Exception Propagation in Blocked Tasks},
632    booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
633    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
634    address     = {Atlanta, U.S.A},
635    month       = nov,
636    year        = 2008,
637    pages       = {8-15},
638}
639
640@article{oop:modpascal,
641    keywords    = {ModPascal},
642    contributer = {gjditchfield@plg},
643    author      = {Walter G. Olthoff},
644    title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
645    journal     = sigplan,
646    volume      = 21,
647    number      = 11,
648    pages       = {429-443},
649    month       = nov,
650    year        = 1986
651}
652
653@inproceedings{Shen91,
654    keywords    = {Ada, polymorphism},
655    contributer = {pabuhr@plg},
656    author      = {Jun Shen and Gordon V. Cormack},
657    title       = {Automatic instantiation in Ada},
658    booktitle   = {Proceedings of the ACM Tri-Ada Conference},
659    organization= {ACM},
660    address     = {San Jose, California, U.S.A},
661    month       = oct,
662    year        = 1991,
663    pages       = {338-346},
664}
665
666@article{Havender68,
667    keywords    = {deadlock},
668    contributer = {pabuhr@plg},
669    author      = {J. W. Havender},
670    title       = {Avoiding Deadlock in Multitasking Systems},
671    journal     = ibmsj,
672    volume      = 7,
673    number      = 2,
674    year        = 1968,
675    pages       = {74-84},
676}
677
678% B
679
680@incollection{beta:old,
681    keywords    = {beta, patterns, virtual types},
682    contributer = {gjditchfield@plg},
683    author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
684    title       = {The BETA Programming Language},
685    booktitle   = {Research Directions in Object-Oriented Programming},
686    publisher   = {MIT Press},
687    series      = {Computer Systems Series},
688    year        = 1987,
689    pages       = {7-48},
690    editor      = {Bruce Shriver and Peter Wegner}
691}
692
693@article{Knudsen87,
694    keyword     = {static exception handling mechanism, BETA, sequel},
695    contributor = {wyrmok@plg},
696    author      = {J{\o}rgen Lindskov Knudsen},
697    title       = {Better Exception Handling in Block Structured Systems},
698    journal     = {IEEE Software},
699    year        = 1987,
700    month       = may,
701    volume      = 4,
702    number      = 3,
703    pages       = {40-49},
704    comments    = {
705        Going up the call hierarchy to look for a handler does not fit an
706        otherwise statically scoped language. Also, not knowing which handler
707        to be used when raising an abnormal event is seen as a weakness of the
708        (dynamic) exception handling mechanism. Knudsen believed that raising
709        an exception should specify the handler for the exception -- the
710        handler is chosen when the exception is raised.  However, I don't think
711        his scheme can solve the problem, especially with all the callback
712        routines commonly found in OO programming.
713
714        BETA exception handling mechanism uses his work as a foundation.
715        However, I don't see any benefits BETA has over other language that is
716        a direct consequence of Knudsen's work. On the other hand, my knowledge
717        on BETA is very limited.
718        }
719}
720
721@book{BCPL,
722    keywords    = {BCPL},
723    contributer = {pabuhr@plg},
724    author      = {M. Richards and C. Whitby-Strevens},
725    title       = {{BCPL} -- The Language and Its Compiler},
726    publisher   = {Cambridge University Press, Cambridge},
727    year        = 1979,
728}
729
730@incollection{Madsen87,
731    keywords    = {nested classes},
732    contributer = {pabuhr@watmsg},
733    author      = {Ole Lehrmann Madsen},
734    title       = {Block Structure and Object Oriented Languages},
735    booktitle   = {Research Directions in Object-Oriented Programming},
736    editor      = {Bruce Shriver and Peter Wegner},
737    publisher   = {MIT Press},
738    series      = {Computer Systems Series},
739    year        = 1987,
740    pages       = {113-128}
741}
742
743@inproceedings{booleanClasses,
744    keywords    = {specifications},
745    contributer = {gjditchfield@plg},
746    author      = {David McAllester and Ramin Zabih},
747    title       = {Boolean Classes},
748    crossref    = "OOPSLA86",
749    pages       = {417-423},
750    abstract    = {
751        We extend the notion of class so that any Boolean combination of
752        classes is also a class.  Boolean classes allow greater precision
753        and conciseness in naming the class of objects governed a
754        particular method [sic].  A class can be viewed as a predicate
755        which is either true or false of any given object.  Unlike
756        predicates however classes have an inheritance hierarchy which is
757        known at compile time.  Boolean classes extend the notion of class,
758        making classes more like predicates, while preserving the compile
759        time computable inheritance hierarchy.
760    },
761    comment = {
762        Classes are predicates; if object {\tt o} is in class {\tt C}, then
763        {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
764        {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
765        {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
766        o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
767        class, it is a superclass of {\tt C}.  Some class expressions, i.e.
768        {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
769        c)}, can't be given methods or members because almost all classes
770        would inherit them, violating modularity.  The rules for spotting
771        these problems are complex.  Determining if one class inherits from
772        another needs an exponential algorithm.
773    }
774}
775
776@misc{BoostCoroutines15,
777    keywords    = {Boost Coroutine Library},
778    contributer = {pabuhr@plg},
779    author      = {Oliver Kowalke},
780    title       = {Boost Coroutine Library},
781    year        = 2015,
782    note        = {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
783                  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}} [Accessed September 2016]},
784}
785
786@mastersthesis{Krischer02,
787    author      = {Roy Krischer },
788    title       = {Bound Exceptions in Object-Oriented Programming Languages},
789    school      = {Universit\"at Mannheim},
790    address     = {Mannheim, Deutschland},
791    year        = 2002,
792    month       = oct,
793    type        = {Diplomarbeit},
794    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-KrischerThesis.ps.gz}}},
795}
796
797@inproceedings{Buhr03,
798    keywords    = {exception handling, bound handler},
799    contributer = {pabuhr@plg},
800    author      = {Peter A. Buhr and Roy Krischer},
801    title       = {Bound Exceptions in Object Programming},
802    booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
803                  Towards Emerging Application Areas and New Programming Paradigms},
804    organization= {ECOOP},
805    address     = {Darmstadt, Germany},
806    month       = jul,
807    year        = 2003,
808    pages       = {20-26},
809}
810%    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
811
812@inproceedings{Buhr06b,
813    keywords    = {exception handling, bound exceptions},
814    author      = {Peter A. Buhr and Roy Krischer},
815    title       = {Bound Exceptions in Object-Oriented Programming},
816    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
817    booktitle   = {Advanced Topics in Exception Handling Techniques},
818    publisher   = {Springer},
819    series      = {Lecture Notes in Computer Science},
820    volume      = 4119,
821    year        = 2006,
822    pages       = {1-21}
823}
824
825% C
826
827@book{C,
828    keywords    = {C},
829    contributer = {pabuhr@plg},
830    author      = {Brian W. Kernighan and Dennis M. Ritchie},
831    title       = {The {C} Programming Language},
832    publisher   = {Prentice-Hall},
833    address     = {Englewood Cliffs},
834    year        = 1988,
835    edition     = {2nd},
836    series      = {Prentice-Hall Software Series},
837    comment     = {
838         based on draft-proposed ANSI C
839    }
840}
841
842@book{C:old,
843    keywords    = {C},
844    contributer = {pabuhr@plg},
845    author      = {Brian W. Kernighan and Dennis M. Ritchie},
846    title       = {The {C} Programming Language},
847    publisher   = {Prentice-Hall},
848    address     = {Englewood Cliffs},
849    year        = 1978,
850    edition     = {1st},
851}
852
853@manual{ANSI89:C,
854    keywords    = {ANSI C 89},
855    contributer = {gjditchfield@plg},
856    title       = {American National Standard for Information Systems -- Programming Language -- {C}},
857    organization= {American National Standards Institute},
858    address     = {1430 Broadway, New York, New York  10018},
859    month       = dec,
860    year        = 1989,
861    note        = {X3.159-1989}
862}
863
864@manual{C11,
865    keywords    = {ISO/IEC C 11},
866    contributer = {pabuhr@plg},
867    author      = {C11},
868    title       = {Programming Languages -- {C} {ISO/IEC} 9889:2011},
869    edition     = {3rd},
870    publisher   = {International Standard Organization},
871    address     = {\href{https://www.iso.org/standard/57853.html}{https://\-www.iso.org/\-standard/\-57853.html}},
872    year        = 2012,
873}
874
875@techreport{C++Concepts,
876    type        = {International Standard},
877    keywords    = {ISO/IEC TS 19217:2015},
878    contributer = {a3moss@uwaterloo.ca},
879    author      = {Concepts},
880    title       = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts {ISO/IEC} {TS} 19217:2015},
881    publisher   = {International Standard Organization},
882    address     = {\href{https://www.iso.org/standard/64031.html}{https://\-www.iso.org/\-standard/\-64031.html}},
883    year        = 2015
884}
885
886@mastersthesis{Esteves04,
887    keywords    = {Cforall, parametric polymorphism, overloading},
888    contributer = {pabuhr@plg},
889    author      = {Rodolfo Gabriel Esteves},
890    title       = {C$\forall$, a Study in Evolutionary Design in Programming Languages},
891    school      = {School of Computer Science, University of Waterloo},
892    year        = 2004,
893    address     = {Waterloo, Ontario, Canada, N2L 3G1},
894    note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
895}
896
897@inproceedings{c++scheme,
898    keywords    = {},
899    contributer = {gjditchfield@plg},
900    author      = {Vincent F. Russo and Simon M. Kaplan},
901    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
902    booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
903    year        = 1988,
904    pages       = {95-108},
905    summary     = {
906        The SIOD interpreter for a Scheme subset, written in C, has a
907        tagged union representing data objects, and read(), eval(), and
908        print() functions that are basically large switch statements that
909        switch based on the tag.  The authors rewrote it to use a class
910        with virtual read(), eval(), and print() members, without changing
911        any algorithms.  The result was more modular, more easily
912        extensible, more reliable, and slightly faster.
913    },
914    comment     = {
915        The evidence given is thin.
916        }
917}
918
919@article{doskernel,
920    keywords    = {light weight processes},
921    contributer = {gjditchfield@plg},
922    author      = {Tom Green},
923    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
924    journal     = {Dr. Dobb's Journal of Software Tools},
925    year        = 1989,
926    month       = feb, volume = 14, number = 2, pages = {45-51},
927    comment     = {
928       A light-weight multitasking kernel for MS-DOS.  A task\_control
929       object holds task objects, which may block themselves on signal
930       objects.  Task switching is normally preemptive, but tasks can turn
931       off preemption before calling non-reentrant routines.  Source code
932       is given.
933    }
934}
935
936@inproceedings{Doeppner87,
937    keywords    = {concurrency},
938    contributer = {pabuhr@plg},
939    author      = {Thomas W. Doeppner and Alan J. Gebele},
940    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
941    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
942    organization= {USENIX Association},
943    address     = {Santa Fe, New Mexico, U.S.A},
944    month       = nov,
945    year        = 1987,
946    pages       = {94-107},
947}
948
949@book{Lippman91,
950    keywords    = {C++},
951    contributer = {pabuhr@plg},
952    author      = {Stanley B. Lippman},
953    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
954    publisher   = {Addison-Wesley},
955    address     = {Boston},
956    year        = 1991,
957    edition     = {2nd},
958    note        = {QA76.73.C15L57},
959}
960
961@book{c++:v1,
962    keywords    = {C++},
963    contributer = {gjditchfield@plg},
964    author      = {Bjarne Stroustrup},
965    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
966    publisher   = {Addison-Wesley},
967    address     = {Boston},
968    year        = 1986,
969    edition     = {1st},
970    series      = {Addison-Wesley Series in Computer Science}
971}
972
973@book{c++:v2,
974    keywords    = {C++},
975    contributer = {pabuhr@plg},
976    author      = {Bjarne Stroustrup},
977    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
978    publisher   = {Addison-Wesley},
979    address     = {Boston},
980    year        = 1991,
981    edition     = {2nd},
982}
983
984@book{c++:v3,
985    keywords    = {C++},
986    contributer = {pabuhr@plg},
987    author      = {Bjarne Stroustrup},
988    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
989    publisher   = {Addison Wesley Longman},
990    year        = 1997,
991    edition     = {3rd},
992}
993
994@manual{Csharp,
995    keywords    = {C#},
996    contributer = {pabuhr@plg},
997    title       = {C\# Language Specification, Standard ECMA-334},
998    organization= {ECMA International Standardizing Information and Communication Systems},
999    month       = jun,
1000    year        = 2006,
1001    edition     = {4th},
1002}
1003
1004@article{Buhr85,
1005    keywords    = {goto, multi-exit loop},
1006    contributer = {pabuhr@plg},
1007    author      = {P. A. Buhr},
1008    title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
1009    journal     = sigplan,
1010    volume      = 20,
1011    number      = 11,
1012    month       = nov,
1013    year        = 1985,
1014    pages       = {14-22}
1015}
1016
1017@techreport{cforall-ug,
1018    keywords    = {cforall, user guide},
1019    contributer = {pabuhr@plg},
1020    author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
1021    title       = {\mbox{\mdseries\sffamily C{$\mathbf{\forall}$}}\ Users Guide, Version 0.1},
1022    institution = {Department of Computer Science, University of Waterloo},
1023    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1024    month       = oct,
1025    year        = 2001,
1026    note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-\char`\~cforall/\-cfa.ps}},
1027}
1028
1029@manual{cforall,
1030    keywords    = {polymorphism},
1031    contributer = {gjditchfield@plg},
1032    author      = {Glen Ditchfield},
1033    title       = {Cforall Reference Manual and Rationale},
1034    edition     = {Revision 1.82},
1035    month       = jan,
1036    year        = 1998,
1037    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
1038}
1039
1040@book{Yourdon79,
1041    keywords    = {software engineering},
1042    contributer = {pabuhr@plg},
1043    editor      = {Edward Nash Yourdon},
1044    title       = {Classics in Software Engineering},
1045    publisher   = {Yourdon Press},
1046    address     = {New York},
1047    year        = 1979,
1048}
1049
1050@inproceedings{Crnogorac98,
1051    keywords    = {inheritance anomaly},
1052    contributer = {pabuhr@plg},
1053    author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
1054    title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
1055    editor      = {Eric Jul},
1056    booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
1057    series      = {Lecture Notes in Computer Science},
1058    publisher   = {Springer},
1059    volume      = 1445,
1060    year        = 1998,
1061    pages       = {571-601},
1062    ISBN        = {3-540-64737-6},
1063    ISSN        = {0302-9743},
1064    abstract    = {
1065        Inheritance is one of the key concepts in object-oriented rogramming. However, the
1066        usefulness of inheritance in concurrent object-oriented programming is greatly
1067        reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
1068        by undesirable re-definitions of inherited code. The problem is aggravated by the
1069        lack of a formal analysis, with a multitude of differing proposals and conflicting
1070        opinions causing the current state of research, and further directions, to be
1071        unclear. In this paper we present a formal analysis of inheritance anomaly in
1072        concurrent object-oriented programming. Starting from a formal definition of the
1073        problem we develop a taxonomy of the anomaly, and use it to classify the various
1074        proposals. As a result, the major ideas, trends and limitations of the various
1075        proposals are clearly exposed. Formal analysis of the anomaly and a thorough
1076        exposition of its causes and implications are the pre-requisites for a successful
1077        integration of inheritance and concurrency.
1078    },
1079}
1080
1081@book{CLU,
1082    keywords    = {CLU},
1083    contributer = {gjditchfield@plg},
1084    author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
1085                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
1086    title       = {CLU Reference Manual},
1087    publisher   = {Springer},
1088    address     = {New York},
1089    year        = 1981,
1090    volume      = 114,
1091    series      = {Lecture Notes in Computer Science}
1092}
1093
1094@manual{Cobol14,
1095    keywords    = {ISO/IEC Cobol 14},
1096    contributer = {pabuhr@plg},
1097    author      = {Cobol14},
1098    title       = {Programming Languages -- {Cobol} ISO/IEC 1989:2014},
1099    edition     = {2nd},
1100    institution = {International Standard Organization},
1101    address     = {\href{https://www.iso.org/standard/51416.html}{https://\-www.iso.org/\-standard/\-51416.html}},
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@plg},
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@plg},
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    author      = {{C Extensions}},
2728    title       = {Extensions to the {C} Language Family},
2729    year        = 2014,
2730    note        = {\href{https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Extensions.html}{https://\-gcc.gnu.org/\-onlinedocs/\-gcc-4.7.2/\-gcc/\-C\-Extensions.html}},
2731    urldate     = {2017-04-02}
2732}
2733
2734@inproceedings{BNRPascal,
2735    keywords    = {concurrency, rendezvous},
2736    contributer = {pabuhr@plg},
2737    author      = {R. Kamel and N. Gammage},
2738    title       = {Experience with Rendezvous},
2739    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
2740    month       = oct,
2741    year        = 1988,
2742    pages       = {143-149}
2743}
2744
2745% F
2746
2747@inproceedings{Knudsen01,
2748    keywords    = {Beta, exception handling},
2749    contributer = {pabuhr@plg},
2750    author      = {J{\o}rgen Lindskov Knudsen},
2751    title       = {Fault Tolerance and Exception Handling in {BETA}},
2752    booktitle   = {Exception Handling},
2753    publisher   = {Springer},
2754    volume      = 2022,
2755    series      = {Lecture Notes in Computer Science},
2756    year        = 2001,
2757    pages       = {1-17}
2758}
2759
2760@article{Lamport87,
2761    keywords    = {software solutions, mutual exclusion, fast},
2762    contributer = {pabuhr@plg},
2763    author      = {Leslie Lamport},
2764    title       = {A Fast Mutual Exclusion Algorithm},
2765    journal     = tocs,
2766    volume      = 5,
2767    number      = 1,
2768    month       = jan,
2769    year        = {1987},
2770    pages       = {1--11},
2771    publisher   = {ACM},
2772    address     = {New York, NY, USA},
2773}
2774
2775@article{Yang95,
2776    keywords    = {software solutions, N-thread, mutual exclusions},
2777    contributer = {pabuhr@plg},
2778    author      = {Jae-Heon Yang and James H. Anderson},
2779    title       = {A Fast, Scalable Mutual Exclusion Algorithm},
2780    journal     = {Distributed Computing},
2781    publisher   = {Springer-Verlag},
2782    volume      = {9},
2783    number      = {1},
2784    year        = {1995},
2785    pages       = {51-60},
2786}
2787
2788@inproceedings{F-bound,
2789    keywords    = {},
2790    contributer = {gjditchfield@plg},
2791    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
2792    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
2793    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
2794    year        = 1989,
2795    month       = sep,
2796    pages       = {273-280}
2797}
2798
2799@mastersthesis{Wasik08,
2800    author      = {Ayelet Wasik},
2801    title       = {Features of a Multi-Threaded Memory Allocator},
2802    school      = {University of Waterloo},
2803    year        = 2008,
2804    month       = jan,
2805    address     = {Waterloo, Ontario, Canada, N2L 3G1},
2806    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
2807}
2808
2809@article{Holzmann94,
2810    keywords    = {semaphore, flags},
2811    contributer = {pabuhr@plg},
2812    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
2813    title       = {The First Data Networks},
2814    journal     = {Scientific American},
2815    month       = jan,
2816    year        = 1994,
2817    volume      = 12,
2818    number      = 1,
2819    pages       = {124-129},
2820}
2821
2822@article{Bohm66,
2823    keywords    = {goto, structured programming},
2824    contributer = {pabuhr@plg},
2825    author      = {C. B\"{o}hm and G. Jacopini},
2826    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
2827    journal     = cacm,
2828    month       = may,
2829    year        = 1966,
2830    volume      = 9,
2831    number      = 5,
2832    pages       = {366-371},
2833}
2834
2835@manual{Fortran95,
2836    keywords    = {Fortran 95},
2837    contributer = {pabuhr@plg},
2838    key         = {Fortran95},
2839    title       = {Fortran 95 Standard, ISO/IEC 1539},
2840    organization= {Unicomp, Inc.},
2841    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
2842    month       = jan,
2843    year        = 1997,
2844}
2845
2846@manual{Fortran08,
2847    keywords    = {ISO/IEC Fortran 08},
2848    contributer = {pabuhr@plg},
2849    author      = {Fortran08},
2850    title       = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2010},
2851    edition     = {3rd},
2852    publisher   = {International Standard Organization},
2853    address     = {\href{https://www.iso.org/standard/50459.html}{https://\-www.iso.org/\-standard/\-50459.html}},
2854    year        = 2010,
2855}
2856
2857@book{Andrews00:book,
2858    keywords    = {concurrency},
2859    contributer = {pabuhr@plg},
2860    author      = {Gregory R. Andrews},
2861    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
2862    publisher   = {Addison--Wesley},
2863    year        = 2000,
2864}
2865
2866@article{Agha89,
2867    keywords    = {actors, concurrency},
2868    contributer = {pabuhr@plg},
2869    author      = {Gul A. Agha},
2870    title       = {Foundational Issues in Concurrent Computing},
2871    journal     = sigplan,
2872    month       = apr,
2873    year        = 1989,
2874    volume      = 24,
2875    number      = 4,
2876    pages       = {60-65},
2877    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
2878                   Sept. 26--27, 1988, San Diego, California, U.S.A},
2879}
2880
2881@article{ool,
2882    keywords    = {},
2883    contributer = {gjditchfield@plg},
2884    author      = {Douglas T. Ross},
2885    title       = {Toward Foundations for the Understanding of Type},
2886    journal     = sigplan,
2887    year        = 1976,
2888    volume      = 11, pages = {63-65},
2889    note        = {Conference on Data: Abstraction, Definition and Structure},
2890    summary     = {
2891        Possibly the first use (without definition, alas) of the phrase
2892        "object oriented language".  Metaphysical to the point of incoherence.
2893    }
2894}
2895
2896@article{frames,
2897    keywords    = {frames},
2898    contributer = {gjditchfield@plg},
2899    author      = {Paul G. Basset},
2900    title       = {Frame-Based Software Engineering},
2901    journal     = {IEEE Software},
2902    month       = jul, year = 1987,
2903    volume      = 4, number = 4, pages = {9-16}
2904}
2905
2906@article{Sutter05,
2907    keywords    = {concurrency, C++},
2908    contributer = {pabuhr@plg},
2909    author      = {Herb Sutter},
2910    title       = {A Fundamental Turn Toward Concurrency in Software},
2911    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2912    month       = mar,
2913    year        = 2005,
2914    volume      = 30,
2915    number      = 3,
2916    pages       = {16-22},
2917}
2918
2919@inproceedings{Dony01,
2920    keywords    = {Smalltalk, exception handling},
2921    contributer = {pabuhr@plg},
2922    author      = {Chistophe Dony},
2923    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
2924    booktitle   = {Exception Handling},
2925    publisher   = {Springer},
2926    volume      = 2022,
2927    series      = {Lecture Notes in Computer Science},
2928    year        = 2001,
2929    pages       = {18-38}
2930}
2931
2932@misc{FW,
2933    key         = {FW},
2934    contributer = {gjditchfield@plg},
2935    title       = {Funk \& Wagnalls Standard Desk Dictionary},
2936    year        = 1980
2937}
2938
2939@book{Knuth73V1,
2940    contributer = {pabuhr@plg},
2941    author      = {Donald E. Knuth},
2942    title       = {Fundamental Algorithms},
2943    series      = {The Art of Computer Programming},
2944    publisher   = {Addison-Wesley},
2945    address     = {Boston},
2946    year        = 1973,
2947    volume      = 1,
2948    edition     = {2nd},
2949}
2950
2951@inproceedings{Strachey,
2952    keywords    = {polymorphism},
2953    contributer = {gjditchfield@plg},
2954    author      = {C. Strachey},
2955    title       = {Fundamental Concepts in Programming Languages},
2956    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
2957    year        = 1967,
2958    month       = aug,
2959    address     = {Copenhagen},
2960    comment     = {
2961        Defines ad-hoc and parametric polymorphism.
2962    }
2963}
2964
2965@article{Eisenberg72,
2966    keywords    = {concurrency, N-Process solution, O(N)},
2967    contributer = {pabuhr@plg},
2968    author      = {Murray A. Eisenberg and Michael R. McGuire},
2969    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
2970    journal     = cacm,
2971    month       = nov,
2972    year        = 1972,
2973    volume      = 15,
2974    number      = 11,
2975    pages       = {999},
2976}
2977
2978% G
2979
2980@article{Boehm88,
2981    keywords    = {conservative garbage collection, C},
2982    contributer = {gjditchfield@plg},
2983    author      = {Hans-Juergen Boehm and Mark Weiser},
2984    title       = {Garbage Collection in an Uncooperative Environment},
2985    journal     = spe,
2986    month       = sep,
2987    year        = 1988,
2988    volume      = 18,
2989    number      = 9,
2990    pages       = {807-820}
2991}
2992
2993@manual{gcc,
2994    keywords    = {},
2995    contributer = {gjditchfield@plg},
2996    title       = {GCC},
2997    author      = {Richard M. Stallman},
2998    organization= {Free Software Foundation},
2999    address     = {Cambridge}
3000}
3001
3002@article{doUpon,
3003    keywords    = {formal verification, axiomatic semantics, control structures},
3004    contributer = {gjditchfield@plg},
3005    author      = {Ed Anson},
3006    title       = {A Generalized Iterative Construct and Its Semantics},
3007    journal     = toplas,
3008    volume      = {9},    number = {4},
3009    pages       = {567-581},
3010    month       = oct, year = 1987,
3011    comment     = {
3012        \begin{verbatim}
3013            do
3014                   P1 -> L1
3015               [] P2 -> L2
3016            ...
3017               [] Pm -> Lm
3018            upon
3019                   Q1 -> M1
3020               [] Q2 -> M2
3021            ...
3022               [] qn -> mn
3023            od
3024        \end{verbatim}
3025
3026        If there is an i such that Qi is true, execute Mi and terminate.
3027        Otherwise, if there is an i such that Pi is true, execute Li and
3028        repeat the loop.  Otherwise, fail.
3029    }
3030}
3031
3032@unpublished{Bilson,
3033    keywords    = {generic programming, generics, polymorphism},
3034    contributor = {a3moss@plg},
3035    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3036    title       = {Generic Programming with Inferred Models},
3037}
3038
3039@article{Haskell,
3040    keywords    = {lazy evaluation, type class},
3041    contributer = {pabuhr},
3042    author      = {Paul Hudak and Joseph H. Fasel},
3043    title       = {A Gentle Introduction to Haskell},
3044    journal     = sigplan,
3045    volume      = 27,
3046    number      = 5,
3047    month       = may,
3048    year        = 1992,
3049    pages       = {T1-53},
3050}
3051
3052@manual{GMP,
3053    keywords    = {GMP arbitrary-precision library},
3054    contributer = {pabuhr@plg},
3055    title       = {{GNU} Multiple Precision Arithmetic Library},
3056    author      = {GMP},
3057    organization= {GNU},
3058    year        = 2016,
3059    note        = {\href{https://gmplib.org}{https://\-gmplib.org}},
3060}
3061
3062@manual{Go,
3063    keywords    = {Go programming language},
3064    contributer = {pabuhr@plg},
3065    title       = {{Go} Programming Language},
3066    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
3067    organization= {Google},
3068    year        = 2009,
3069    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3070}
3071
3072@article{Dijkstra68a,
3073    keywords    = {goto},
3074    contributer = {pabuhr@plg},
3075    author      = {Edsger W. Dijkstra},
3076    title       = {Go To Statement Considered Harmful},
3077    journal     = cacm,
3078    month       = mar,
3079    year        = 1968,
3080    volume      = 11,
3081    number      = 3,
3082    pages       = {147-148},
3083    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3084}
3085
3086@online{GObject,
3087    keywords    = {GObject},
3088    contributor = {a3moss@uwaterloo.ca},
3089    author      = {{GObject}},
3090    organization= {The GNOME Project},
3091    title       = {{GObject} Reference Manual},
3092    year        = 2014,
3093    url         = {https://developer.gnome.org/gobject/stable/},
3094    urldate     = {2017-04-04}
3095}
3096
3097@article{Choi91,
3098    keywords    = {contra-variance, functions},
3099    contributer = {pabuhr@plg},
3100    author      = {Injun Choi and Michael V. Mannino},
3101    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3102    journal     = {OOPS Messenger},
3103    volume      = 2,
3104    number      = 1,
3105    month       = jan,
3106    year        = 1991,
3107    pages       = {38-54},
3108}
3109
3110@misc{GNU-C,
3111    keywords    = {C, ANSI C},
3112    contributer = {pabuhr@plg},
3113    author      = {Richard Stallman},
3114    title       = {The Free Software Foundation's Gnu {C} Compiler},
3115    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3116    year        = 1989,
3117}
3118
3119@article{Dijkstra:green,
3120    keywords    = {ada},
3121    contributer = {gjditchfield@plg},
3122    author      = {Edsger W. Dijkstra},
3123    title       = {On the GREEN Language submitted to the DoD},
3124    journal     = sigplan,
3125    year        = 1978,
3126    month       = oct,
3127    volume      = 13,
3128    number      = 10,
3129    pages       = {16-21}
3130}
3131
3132@inproceedings{Miller02,
3133    keywords    = {exception handling},
3134    contributer = {pabuhr@plg},
3135    author      = {Robert Miller and Anand Tripathi},
3136    title       = {The Guardian Model for Exception Handling in Distributed Systems},
3137    booktitle   = {21st Symposium on Reliable Distributed Systems},
3138    organization= {IEEE},
3139    address     = {Suita, Japan},
3140    year        = 2002,
3141    month       = oct,
3142    pages       = {304-313}
3143}
3144
3145@phdthesis{Chen09,
3146    author      = {Jun Chen},
3147    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
3148    school      = {University of Waterloo},
3149    year        = 2009,
3150    month       = sep,
3151    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3152    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3153}
3154
3155@misc{GNU-C++,
3156    keywords    = {C++, GNU C},
3157    contributer = {pabuhr@plg},
3158    author      = {Michael D. Tiemann},
3159    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3160    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3161    month       = mar,
3162    year        = 1990,
3163}
3164
3165% H
3166
3167@article{Michael04a,
3168    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3169    author      = {Maged M. Michael},
3170    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3171    journal     = ieeepds,
3172    volume      = 15,
3173    number      = 6,
3174    month       = jun,
3175    year        = 2004,
3176    pages       = {491-504},
3177    publisher   = {IEEE Press},
3178    address     = {Piscataway, NJ, USA},
3179}
3180
3181@techreport{Hermes90,
3182    keywords    = {processes, distributed computing},
3183    contributer = {pabuhr@plg},
3184    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3185    title       = {Hermes: A Language for Distributed Computing},
3186    institution = {IBM T. J. Watson Research Center},
3187    address     = {Yorktown Heights, New York, U.S.A., 10598},
3188    month       = oct,
3189    year        = 1990,
3190}
3191
3192@book{Hermes91,
3193    keywords    = {processes, distributed computing},
3194    contributer = {pabuhr@plg},
3195    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3196    title       = {Hermes: A Language for Distributed Computing},
3197    publisher   = {Prentice-Hall},
3198    address     = {Englewood Cliffs},
3199    series      = {Innovative Technology},
3200    year        = 1991,
3201}
3202
3203@article{katzenelson83b,
3204    contributer = {gjditchfield@plg},
3205    author      = "Jacob Katzenelsen",
3206    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3207    journal     = spe,
3208    year        = 1983,
3209    volume      = 13,
3210    number      = 7,
3211    pages       = {577-596},
3212    month       = jul
3213}
3214
3215@techreport{Hoare73,
3216    keywords    = {},
3217    contributer = {gjditchfield@plg},
3218    author      = {C. A. R. Hoare},
3219    title       = {Hints on Programming Language Design},
3220    institution = {Stanford University Computer Science Department},
3221    year        = 1973,
3222    month       = dec,
3223    number      = {CS-73-403},
3224    note        = {Reprinted in \cite{pldesign}.}
3225}
3226
3227@article{Dijkstra71,
3228    keywords    = {monitor, secretary},
3229    contributer = {pabuhr@plg},
3230    author      = {E. W. Dijkstra},
3231    title       = {Hierarchical Ordering of Sequential Processes},
3232    journal     = acta,
3233    volume      = 1,
3234    pages       = {115-138},
3235    year        = 1971,
3236}
3237
3238@article{Buhr15a,
3239    keywords    = {software solution, mutual exclusion, performance experiment},
3240    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3241    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3242    journal     = ccpe,
3243    volume      = 27,
3244    number      = 3,
3245    pages       = {651-701},
3246    month       = mar,
3247    year        = 2015,
3248}
3249
3250@article{Ackermann28,
3251    keywords    = {recursion, Ackermann function},
3252    contributer = {pabuhr@plg},
3253    author      = {Wilhelm Ackermann},
3254    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
3255    publisher   = {Springer},
3256    journal     = mathann,
3257    number      = 1,
3258    volume      = 99,
3259    pages       = {118-133},
3260    month       = dec,
3261    year        = 1928,
3262}
3263
3264@inproceedings{typeclass,
3265    keywords    = {Hindley/Miller type systems, Haskell},
3266    contributer = {gjditchfield@plg},
3267    author      = {Philip Wadler and Stephen Blott},
3268    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3269    booktitle   = popl,
3270    year        = 1989,
3271    pages       = {60-76},
3272    organization= {Association for Computing Machinery}
3273}
3274
3275% I
3276
3277@book{IBM370,
3278    keywords    = {370, IBM},
3279    contributer = {pabuhr@plg},
3280    key         = {IBM370},
3281    title       = {{IBM} System/370 Principles of Operation},
3282    publisher   = {IBM},
3283    number      = {GA22-7000-8},
3284    month       = oct,
3285    year        = 1981,
3286    edition     = {9th}
3287}
3288
3289@book{Icon,
3290    keywords    = {Icon},
3291    contributer = {pabuhr@plg},
3292    author      = {Ralph E. Griswold and Madge T. Griswold},
3293    title       = {The Icon Programming Language},
3294    publisher   = {Prentice-Hall},
3295    address     = {Englewood Cliffs},
3296    year        = 1983,
3297}
3298
3299@inproceedings{Valois94,
3300    keywords    = {lock free, queue},
3301    contributer = {pabuhr@plg},
3302    author      = {John D. Valois},
3303    title       = {Implementing Lock-Free Queues},
3304    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
3305    address     = {Las Vegas, Nevada, U.S.A.},
3306    year        = {1994},
3307    pages       = {64-69},
3308}
3309
3310@article{Hehner81,
3311    keywords    = {concurrency, critical section, bakery algorithm},
3312    contributer = {pabuhr@plg},
3313    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
3314    title       = {An Implementation of {P} and {V}},
3315    journal     = ipl,
3316    year        = 1981,
3317    month       = aug,
3318    volume      = 12,
3319    number      = 4,
3320    pages       = {196-198},
3321}
3322
3323@incollection{Steenkiste91,
3324    keywords    = {lisp},
3325    contributer = {gjditchfield@plg},
3326    author      = {Peter A. Steenkiste},
3327    title       = {The Implementation of Tags and Run-Time Checking},
3328    booktitle   = {Topics in Advanced Language Implementation},
3329    pages       = {3-24},
3330    year        = 1991,
3331    editor      = {Peter Lee},
3332    chapter     = {1},
3333    publisher   = {The MIT Press}
3334}
3335
3336@techreport{Roberts89,
3337    keywords    = {},
3338    contributer = {pabuhr@plg},
3339    author      = {Eric S. Roberts},
3340    title       = {Implementing Exceptions in {C}},
3341    institution = {Digital Systems Research Center},
3342    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3343    number      = {40},
3344    month       = mar,
3345    year        = 1989,
3346}
3347
3348@mastersthesis{Bilson03,
3349    keywords    = {Cforall, parametric polymorphism, overloading},
3350    contributer = {pabuhr@plg},
3351    author      = {Richard C. Bilson},
3352    title       = {Implementing Overloading and Polymorphism in Cforall},
3353    school      = {School of Computer Science, University of Waterloo},
3354    year        = 2003,
3355    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3356    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3357}
3358
3359@article{Buhr05b,
3360    keywords    = {monitor, automatic signal, implicit signal},
3361    contributer = {pabuhr@plg},
3362    author      = {Peter A. Buhr and Ashif S. Harji},
3363    title       = {Implicit-signal monitors},
3364    journal     = toplas,
3365    volume      = 27,
3366    number      = 6,
3367    month       = nov,
3368    year        = 2005,
3369    issn        = {0164-0925},
3370    pages       = {1270--1343},
3371    publisher   = {ACM Press},
3372    address     = {New York, NY, USA},
3373}
3374
3375@article{Baker77,
3376    author      = {Henry C. Baker, Jr. and Carl Hewitt},
3377    title       = {The Incremental Garbage Collection of Processes},
3378    journal     = {SIGART Bulletin},
3379    publisher   = {ACM},
3380    address     = {New York, NY, USA},
3381    month       = aug,
3382    year        = 1977,
3383    pages       = {55-59},
3384    issn        = {0163-5719},
3385}
3386
3387@book{Algol68,
3388    keywords    = {Algol68},
3389    contributer = {pabuhr@plg},
3390    author      = {C. H. Lindsey and S. G. van der Meulen},
3391    title       = {Informal Introduction to ALGOL 68},
3392    publisher   = {North-Holland},
3393    address     = {London},
3394    year        = 1977,
3395}
3396
3397@inproceedings{Cook90,
3398    keywords    = {f-bounded polymorhpism, lambda calculus},
3399    contributer = {gjditchfield@plg},
3400    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
3401    title       = {Inheritance is Not Subtyping},
3402    booktitle   = popl,
3403    year        = 1990,
3404    pages       = {125-135},
3405    organization= {Association for Computing Machinery},
3406    abstract    = {
3407        In typed object-oriented languages the subtype relation is
3408        typically based on the inheritance hierarchy.  This approach,
3409        however, leads either to insecure type-systems or to restrictions
3410        on inheritance that make it less flexible than untyped Smalltalk
3411        inheritance.  We present a new typed model of inheritance that
3412        allows more of the flexibility of Smalltalk inheritance within a
3413        statically-typed system.  Significant features of our analysis are
3414        the introduction of polymorphism into the typing of inheritance and
3415        the uniform application of inheritance to objects, classes and
3416        types.  The resulting notion of {\em type inheritance} allows us to
3417        show that the type of an inherited object is an inherited type but
3418        not always a subtype.
3419    }
3420}
3421
3422@inproceedings{MMR92,
3423    keywords    = {},
3424    contributer = {gjditchfield@plg},
3425    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3426    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3427                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3428    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3429    year        = 1992,
3430    month       = aug,
3431    pages       = {295-312},
3432    organization= {USENIX Association},
3433    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3434    abstract    = {
3435        This paper reports our experiences integrating the Sun Microsystems
3436        RPC and XDR protocol specifications into the C++ model of
3437        input/output streams.  As part of the {\it Renaissance} operating
3438        system project, we wish to construct network servers and clients,
3439        written in C++, which interoperate with existing UNIX clients
3440        and servers.  We discovered that, although it would be possible to
3441        re-implement the procedural based XDR/RPC implementation
3442        distributed by Sun Microsystems in C++, it is far cleaner to
3443        integrate the protocols with the C++ I/O stream model.  We
3444        feel the resulting model provides a cleaner way of implementing RPC
3445        clients and servers without losing functionality or compatibility
3446        with existing clients and servers.
3447    }
3448}
3449
3450@inproceedings{Zuo08,
3451    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3452    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
3453    title       = {An Intelligent Multi-Port Memory},
3454    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3455    month       = dec,
3456    year        = 2008,
3457    pages       = {251-254},
3458    publisher   = {IEEE Computer Society},
3459    address     = {Los Alamitos, CA, USA},
3460}
3461
3462@book{Francez96,
3463    keywords    = {await, formal},
3464    contributer = {pabuhr@plg},
3465    author      = {Nissim Francez and Ira R. Forman},
3466    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3467    publisher   = {Addison-Wesley},
3468    address     = {Boston},
3469    series      = {ACM Press Books},
3470    year        = 1996,
3471}
3472
3473@article{Labreche90,
3474    keywords    = {concurrency, C++},
3475    contributer = {pabuhr@plg},
3476    author      = {Pierre Labr{\`{e}}che},
3477    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3478    journal     = sigplan,
3479    volume      = 25,
3480    number      = 4,
3481    month       = apr,
3482    year        = 1990,
3483    pages       = {20-32},
3484}
3485
3486@inproceedings{interfaces,
3487    keywords    = {parameterized interfaces, classes, recursion/inheritance},
3488    contributer = {gjditchfield@plg},
3489    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
3490        Walter G. Olthoff},
3491    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
3492    crossref    = "OOPSLA89",
3493    pages       = {457-467},
3494    abstract    = {
3495        This paper develops a system of explicit interfaces for
3496        object-oriented programming.  The system provides the benefits of
3497        module interfaces found in languages like Ada and Modula-2 while
3498        preserving the expressiveness that gives untyped object-oriented
3499        languages like Smalltalk their flexibility.  Interfaces are
3500        interpreted as polymorphic types to make the system sufficiently
3501        powerful.  We use interfaces to analyze the properties of
3502        inheritance, and identify three distinct kinds of inheritance in
3503        object-oriented programming, corresponding to objects, classes, and
3504        interfaces, respectively.  Object interfaces clarify the
3505        distinction between interface containment and inheritance and give
3506        insight into limitations caused by equating the notions of type and
3507        class in many typed object-oriented programming languages.
3508        Interfaces also have practical consequences for design,
3509        specification, and maintenance of object-oriented systems.
3510    }
3511}
3512
3513@phdthesis{Girard72,
3514    keywords    = {universal quantification},
3515    contributer = {gjditchfield@plg},
3516    author      = {J.-Y. Girard},
3517    title       = {Interpretation fonctionelle et elimination des coupures de
3518        l'arithmetique d'ordre superieur},
3519    school      = {Universite Paris},
3520    year        = {1972}
3521}
3522
3523@article{Karaorman93,
3524    keywords    = {Eiffel, concurrency libraries},
3525    contributer = {pabuhr@plg},
3526    author      = {Murat Karaorman and John Bruno},
3527    title       = {Introducing Concurrency to a Sequential Language},
3528    journal     = cacm,
3529    month       = sep,
3530    year        = 1993,
3531    volume      = 36,
3532    number      = 9,
3533    pages       = {103-116}
3534}
3535
3536@book{Corman92,
3537    keywords    = {PRAM, parallel algorithms},
3538    contributer = {pabuhr@plg},
3539    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3540    title       = {Introduction to Algorithms},
3541    publisher   = {MIT Press/McGraw-Hill},
3542    address     = {Cambridge},
3543    series      = {Electrical Engineering and Computer Science Series},
3544    year        = 1992,
3545}
3546
3547@book{Hopcroft79,
3548    keywords    = {finite-state machine, push-dowm automata},
3549    contributer = {pabuhr@plg},
3550    author      = {John E. Hopcroft and Jeffrey D. Ullman},
3551    title       = {Introduction to Automata Theory, Languages and Computation},
3552    publisher   = {Addison-Wesley},
3553    address     = {Boston},
3554    year        = 1979,
3555}
3556
3557@techreport{walker87,
3558    keywords    = {CCS},
3559    contributer = {gjditchfield@plg},
3560    author      = {David Walker},
3561    title       = {Introduction to a Calculus of Communicating Systems},
3562    institution = {Laboratory for Foundations of Computer Science},
3563    year        = 1987,
3564    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3565    month       = jun,
3566    number      = {ECS-LFCS-87-22},
3567}
3568
3569@article{katzenelson83a,
3570    author      = {Jacob Katzenelson},
3571    title       = {Introduction to Enhanced C (EC)},
3572    journal     = spe,
3573    volume      = 13,
3574    number      = 7,
3575    year        = 1983,
3576    month       = jul,
3577    pages       = {551-576},
3578}
3579
3580@book{Deitel90,
3581    keywords    = {concurrency, operating systems},
3582    contributer = {pabuhr@plg},
3583    author      = {Harvey M. Deitel},
3584    title       = {An Introduction to Operating Systems},
3585    publisher   = {Addison-Wesley},
3586    address     = {Boston},
3587    year        = 1990,
3588    edition     = {2nd},
3589}
3590
3591@techreport{Birrell89,
3592    keywords    = {threads, monitors},
3593    contributer = {pabuhr@plg},
3594    author      = {Andrew D. Birrell},
3595    title       = {An Introduction to Programming with Threads},
3596    institution = {Digital Systems Research Center},
3597    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3598    number      = {35},
3599    month       = jan,
3600    year        = 1989,
3601    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3602
3603}
3604
3605@article{t/o,
3606    keywords    = {Trellis/Owl},
3607    contributer = {gjditchfield@plg},
3608    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3609    title       = {An Introduction to Trellis/Owl},
3610    journal     = sigplan,
3611    volume      = 21,
3612    number      = 11,
3613    year        = 1986,
3614    month       = nov,
3615    pages       = {9-16},
3616}
3617
3618@inproceedings{Hibbard77,
3619    keywords    = {algol-68, concurrency},
3620    contributer = {pabuhr@plg},
3621    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3622    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3623    booktitle   = {Proceedings of the 5th Annual iii Conference},
3624    address     = {Guidel, France},
3625    month       = may,
3626    year        = 1977,
3627    pages       = {203-221}
3628}
3629
3630@inproceedings{Miller97,
3631    keywords    = {exception handling, software-engineering},
3632    contributer = {pabuhr@plg},
3633    author      = {Robert Miller and Anand Tripathi},
3634    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
3635    booktitle   = {ECOOP'97},
3636    publisher   = {Springer},
3637    volume      = 1241,
3638    series      = {Lecture Notes in Computer Science},
3639    year        = 1997,
3640    pages       = {85-103}
3641}
3642   
3643@article{Murer96,
3644    keywords    = {interators, generators, cursors},
3645    contributer = {pabuhr@plg},
3646    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3647    title       = {Iteration Abstraction in Sather},
3648    journal     = toplas,
3649    month       = jan,
3650    year        = 1996,
3651    volume      = 18,
3652    number      = 1,
3653    pages       = {1-15},
3654}
3655
3656% J
3657                 
3658@book{Java,
3659    keywords    = {Java},
3660    contributer = {pabuhr@plg},
3661    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3662    title       = {The {Java} Language Specification},
3663    publisher   = {Addison-Wesley},
3664    address     = {Reading},
3665    year        = 2000,
3666    edition     = {2nd},
3667}
3668
3669@manual{Java8,
3670    keywords    = {Java SE 8},
3671    contributer = {pabuhr@plg},
3672    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3673    title       = {{Java} Language Spec.},
3674    organization= {Oracle},
3675    publisher   = {Oracle},
3676    year        = 2015,
3677    edition     = {Java SE8},
3678}
3679
3680@manual{JUC,
3681    keywords    = {Java concurrency library},
3682    contributer = {pabuhr@plg},
3683    title       = {java.util.concurrency},
3684    author      = {Doug Lea},
3685    organization= {Oracle},
3686    year        = 2014,
3687    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}}},
3688}
3689
3690% K
3691
3692@article{Duggan96,
3693    keywords    = {concurrency, critical section},
3694    contributer = {pabuhr@plg},
3695    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
3696    title       = {Kinded Type Inference for Parametric Overloading},
3697    journal     = acta,
3698    volume      = 33,
3699    number      = 1,
3700    year        = 1996,
3701    pages       = {21-68},
3702}
3703
3704@article{Peter35,
3705    keywords    = {recursion, Ackermann function},
3706    contributer = {pabuhr@plg},
3707    author      = {R{\'{o}}zsa P{\'{e}}ter},
3708    title       = {Konstruktion nichtrekursiver Funktionen},
3709    publisher   = {Springer},
3710    journal     = mathann,
3711    number      = 111,
3712    volume      = 1,
3713    pages       = {42-60},
3714    month       = dec,
3715    year        = 1935,
3716}
3717
3718% L
3719
3720@TechReport{WVWR88:L,
3721    contributer = {gjditchf@plg},
3722    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
3723    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
3724    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
3725    year        = 1988,
3726    number      = {88-3},
3727    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
3728                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
3729                   ED Nijmegen, The Netherlands},
3730    month       = apr,
3731    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
3732                   \item A trivial type, ``!'', with a single element.
3733                   \item Labelled types, distinct from each other.
3734                   ``!False'' and ``!True'' are distinct types, each
3735                   containing a single value serving as boolean false and
3736                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
3737                   type containing only 2.
3738                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
3739                   types are abbreviations for disjunctions.
3740                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
3741                   ``Re'' and ``Im'' are type labels that distinguish between the
3742                   fields.
3743                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
3744                   and dyadic infix functions.
3745                   \item Function types, universal types, existential types,
3746                   and subtyping (viewed as coercion), as in Fun.
3747                   \end{itemize}
3748                   Disjunctions and conjunctions types are associative and
3749                   commutative (i.e. flat).  Each type has a matching
3750                   constructor.  Functions use pattern matching on type
3751                   labels to strip labels and extract conjunction fields:
3752                   \begin{verbatim}
3753                   \lambda n {0...1000000 Guilders}. ... n ...
3754                   -- both argument and n are amounts in Guilders.
3755                   \lambda n {0...1000000} Guilders. ... n ...
3756                   -- argument in Guilders, but n is in 0...1000000.
3757                   \end{verbatim}
3758                   ``Function bundles'' (conjunctions of functions), applied
3759                   to arguments, replace Dijkstra's guarded if...fi, but the
3760                   bundles are first-class and the guards are part of their
3761                   type.
3762
3763                   The same trick used to define the type ``2'' is used to
3764                   move absolute times into the type system, to allow static
3765                   checking. ``0`'' denotes a time before the system begins
3766                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
3767                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
3768                   of a value of type a that will be available no later
3769                   (earlier) than time t.  Universals and existentials use
3770                   subtyping to parameterize functions by start time:
3771                   \begin{verbatim}
3772                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
3773                   f{then} y -- argument y must be available at time ``then''.
3774                   \end{verbatim}
3775                   Functions can return before their arguments are available
3776                   if they don't use them.  However, function {\em bundles}
3777                   can't return until their result type is known, so the
3778                   lower and upper time bounds of the bundle are the
3779                   second-last upper bound of the component functions: at
3780                   that time, there is only one alternative left.
3781
3782                   Explicit time parameterization allows slack in time
3783                   specification.  Tools could point out slack or determine
3784                   degree of parallelism.}
3785}
3786
3787@mastersthesis{Clarke90,
3788    keywords    = {concurrency, postponing requests},
3789    contributer = {pabuhr@plg},
3790    author      = {Charles L. A. Clarke},
3791    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
3792    school      = {University of Waterloo},
3793    year        = 1990,
3794    address     = {Waterloo, Ontario, Canada, N2L 3G1}
3795}
3796
3797@article{Tennent77,
3798    keywords    = {abstraction, correspondence, Pascal},
3799    contributer = {gjditchfield@plg},
3800    author      = {R. D. Tennent},
3801    title       = {Language Design Methods Based on Semantic Principles},
3802    journal     = acta,
3803    year        = 1977,
3804    volume      = 8,
3805    number      = 2,
3806    pages       = {97-112},
3807    note        = {reprinted in \cite{pldesign}},
3808    abstract    = {
3809        Two language design methods based on principles derived from the
3810        denotational approach to programming language semantics are
3811        described and illustrated by an application to the language Pascal.
3812        The principles are, firstly, the correspondence between parametric
3813        and declarative mechanisms and secondly, a principle of abstraction
3814        for programming languages adapted from set theory.  Several useful
3815        extensions and generalizations of Pascal emerge by applying these
3816        principles, including a solution to the array parameter problem,
3817        and a modularization facility.
3818    },
3819}
3820
3821@article{Liskov86,
3822    keywords    = {synchronous communication, concurrency},
3823    contributer = {pabuhr@plg},
3824    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
3825    title       = {Limitations of Synchronous Communication with Static
3826                   Process Structure in Languages for Distributed Computing},
3827    journal     = {},
3828    volume      = {},
3829    number      = {},
3830    month       = {},
3831    year        = {},
3832    pages       = {},
3833}
3834
3835@article{Linda,
3836    keywords    = {Linda, concurrency},
3837    contributer = {pabuhr@plg},
3838    author      = {Nicholas Carriero and David Gelernter},
3839    title       = {Linda in Context},
3840    journal     = cacm,
3841    volume      = 32,
3842    number      = 4,
3843    month       = apr,
3844    year        = 1989,
3845    pages       = {444-458}
3846}
3847
3848@book{Weissman67,
3849    keywords    = {lisp},
3850    author      = {Clark Weissman},
3851    title       = {Lisp 1.5 Primer},
3852    publisher   = {Dickenson Publishing},
3853    address     = {Belmont},
3854    year        = 1967,
3855}
3856
3857@article{Sundell08,
3858    keywords    = {lock free, deque},
3859    contributer = {pabuhr@plg},
3860    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
3861    title       = {Lock-free Deques and Doubly Linked Lists},
3862    journal     = {J. Parallel Distrib. Comput.},
3863    volume      = 68,
3864    number      = 7,
3865    year        = 2008,
3866    pages       = {1008-1020},
3867}
3868
3869@article{Cormack89,
3870    keywords    = {parsing, LR, error recovery},
3871    contributer = {pabuhr@plg},
3872    author      = {Gordon V. Cormack},
3873    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
3874    journal     = sigplan,
3875    volume      = 24,
3876    number      = 7,
3877    month       = jul,
3878    year        = 1989,
3879    pages       = {161-169},
3880    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
3881}
3882
3883% M
3884
3885@book{M68K,
3886    keywords    = {M680XX, Motorola},
3887    contributer = {pabuhr@plg},
3888    key         = {Motorola},
3889    title       = {M68000 Family Programmer's Reference Manual},
3890    publisher   = {Motorola},
3891    year        = 1992,
3892}
3893
3894@article{c++libs,
3895    keywords    = {directory structure},
3896    contributer = {gjditchfield@plg},
3897    author      = {J. M. Coggins and G. Bollella},
3898    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
3899    journal     = sigplan,
3900    year        = 1989,
3901    month       = jun, volume = 24, number = 6, pages = {37-48},
3902    abstract    = {
3903        This paper describes a scheme we have used to manage a large
3904        library written in the C++ language.  The scheme imposes a
3905        directory structure, and represents dependency hierarchy in a
3906        globally accessible file we call the 'prelude' file.  We also
3907        discuss the structure of the description files (makefiles) used
3908        with the UNIX options we have found to be useful in reducing the
3909        size of the library, and how to minimize recompilation time after
3910        trivial changes to the source code of the library.
3911    }
3912}
3913
3914@inproceedings{mprof,
3915    keywords    = {malloc},
3916    contributer = {gjditchfield@plg},
3917    author      = {Benjamin Zorn and Paul Hilfinger},
3918    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
3919    booktitle   = {Summer 1988 {USENIX} proceedings},
3920    year        = 1988
3921}
3922
3923@manual{MMTk,
3924    keywords    = {Java memory management},
3925    contributer = {pabuhr@plg},
3926    title       = {MMTk: The Memory Management Toolkit},
3927    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
3928    month       = sep,
3929    year        = 2006,
3930    note        = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
3931}
3932
3933@article{Adve10,
3934    keywords    = {Java memory management},
3935    contributer = {pabuhr@plg},
3936    author      = {Sarita V. Adve and Hans-J. Boehm},
3937    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
3938    journal     = cacm,
3939    volume      = 53,
3940    number      = 8,
3941    month       = aug,
3942    year        = 2010,
3943    pages       = {90-101},
3944    publisher   = {ACM},
3945    address     = {New York, NY, USA},
3946}
3947@techreport{Mesa,
3948    keywords    = {monitors, packages},
3949    contributer = {pabuhr@plg},
3950    author      = {James G. Mitchell and William Maybury and Richard Sweet},
3951    title       = {Mesa Language Manual},
3952    institution = {Xerox Palo Alto Research Center},
3953    number      = {CSL--79--3},
3954    month       = apr,
3955    year        = 1979
3956}
3957
3958@article{Andrews89,
3959    keywords    = {semaphore, split-binary, baton},
3960    contributer = {pabuhr@plg},
3961    author      = {Gregory R. Andrews},
3962    title       = {A Method for Solving Synronization Problems},
3963    journal     = scp,
3964    volume      = 13,
3965    number      = 4,
3966    month       = dec,
3967    year        = 1989,
3968    pages       = {1-21},
3969}
3970
3971@inproceedings{Mitchell78,
3972    keywords    = {Mesa},
3973    contributer = {pabuhr@plg},
3974    author      = {James G. Mitchell},
3975    title       = {Mesa: A Designer's User Perspective},
3976    booktitle   = {Spring CompCom 78},
3977    organization= {Sixteenth IEEE Computer Society International Conference},
3978    address     = {San Francisco, California, U.S.A.},
3979    month       = feb,
3980    year        = 1978,
3981    pages       = {36-39},
3982    note        = {IEEE Catalog No. 78CH1328-4C},
3983}
3984
3985@article{Gentleman81,
3986    keywords    = {messages, concurrency},
3987    contributer = {pabuhr@plg},
3988    author      = {W. Morven Gentleman},
3989    title       = {Message Passing between Sequential Processes:
3990                   the Reply Primitive and the Administrator Concept},
3991    journal     = spe,
3992    month       = may,
3993    year        = 1981,
3994    volume      = 11,
3995    number      = 5,
3996    pages       = {435-466}
3997}
3998
3999@article{Cormack88,
4000    keywords    = {concurrency},
4001    contributer = {pabuhr@plg},
4002    author      = {G. V. Cormack},
4003    title       = {A Micro Kernel for Concurrency in C},
4004    journal     = spe,
4005    month       = may,
4006    year        = 1988,
4007    volume      = 18,
4008    number      = 4,
4009    pages       = {485-491}
4010}
4011
4012@article{Buhr90a,
4013    keywords    = {concurrency, light-weight process, shared memory},
4014    contributer = {pabuhr@plg},
4015    author      = {Peter A. Buhr and Richard A. Stroobosscher},
4016    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4017    journal     = spe,
4018    volume      = 20,
4019    number      = 9,
4020    month       = sep,
4021    year        = 1990,
4022    pages       = {929-963},
4023}
4024
4025@techreport{uSystem,
4026    keywords    = {C, concurrency, light-weight process, shared memory},
4027    contributer = {pabuhr@plg},
4028    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4029    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4030    institution = {Department of Computer Science, University of Waterloo},
4031    address     = {Waterloo, Ontario, Canada, N2L 3G1},
4032    month       = sep,
4033    year        = 1994,
4034    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
4035}
4036
4037@book{Mips4000,
4038    key         = {Mips4000},
4039    title       = {MIPS R4000 Microprocessor User's Manual},
4040    publisher   = {MIPS Computer Systems Inc},
4041    year        = 1991,
4042}
4043
4044@inproceedings{Mjolner,
4045    keywords    = {Mjolner, hierarchical windows},
4046    contributer = {pabuhr@plg},
4047    author      = {G\"{o}rel Hedin and Boris Magnusson},
4048    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4049    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4050    organization= {ECOOP'88},
4051    publisher   = {Springer},
4052    volume      = 322,
4053    editor      = {S. Gjessing and K. Nygaard},
4054    address     = {Oslo, Norway},
4055    month       = aug,
4056    year        = 1988,
4057    pages       = {41-54},
4058    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4059}
4060
4061@article{Skillicorn98,
4062    keywords    = {parallel models},
4063    contributer = {pabuhr@plg},
4064    author      = {David B. Skillicorn and Domenico Talia},
4065    title       = {Models and Languages for Parallel Computation},
4066    journal     = acmcs,
4067    volume      = 30,
4068    number      = 2,
4069    month       = jun,
4070    year        = 1998,
4071    pages       = {123-169},
4072}
4073
4074@article{Werther96,
4075    keywords    = {C++, language syntax},
4076    contributer = {pabuhr@plg},
4077    author      = {Ben Werther and Damian Conway},
4078    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4079    journal     = sigplan,
4080    volume      = 31,
4081    number      = 11,
4082    month       = nov,
4083    year        = 1996,
4084    pages       = {74-82},
4085}
4086
4087@book{Alexandrescu01,
4088    keywords    = {c design-patterns programming},
4089    contributer = {pabuhr@plg},
4090    author      = {Andrei Alexandrescu},
4091    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4092    publisher   = {Addison-Wesley Professional},
4093    address     = {Boston},
4094    month       = feb,
4095    year        = 2001,
4096    isbn        = {0201704315},
4097}
4098
4099@book{Tanenbaum92,
4100    keywords    = {concurrency, operating systems},
4101    contributer = {pabuhr@plg},
4102    author      = {Andrew S. Tanenbaum},
4103    title       = {Modern Operating Systems},
4104    publisher   = {Prentice-Hall},
4105    address     = {Englewood Cliffs},
4106    year        = 1992,
4107}
4108
4109@article{Wirth77,
4110    keywords    = {modules, coroutines},
4111    contributer = {pabuhr},
4112    author      = {Niklaus Wirth},
4113    title       = {Modula: a Language for Modular Multiprogramming},
4114    journal     = spe,
4115    month       = {January--February},
4116    year        = 1977,
4117    volume      = 7,
4118    number      = 1,
4119    pages       = {3-35},
4120}
4121
4122@book{Harbison92,
4123    contributer = {mhcoffin},
4124    author      = {Samuel P. Harbison},
4125    title       = {Modula-3},
4126    publisher   = {Prentise Hall, Inc.},
4127    year        = {1992},
4128    comment     = {This is a textbook for learning Modula-3.}
4129}
4130
4131@techreport{Modula-3:old,
4132    keywords    = {Modula-3, inheritance, type extension},
4133    contributer = {gjditchfield@plg},
4134    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4135                   Jordan and Bill Kalsow and Greg Nelson},
4136    title       = {Modula-3 Report},
4137    institution = {Systems Research Center},
4138    address     = {130 Lytton Avenue, Palo Alto, California  94301},
4139    month       = aug,
4140    year        = 1988,
4141    number      = 31
4142}
4143 
4144@article{Dueck90,
4145    keywords    = {attribute grammars},
4146    contributer = {pabuhr@plg},
4147    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
4148    title       = {Modular Attribute Grammars},
4149    journal     = {The Computer Journal},
4150    month       = apr,
4151    year        = 1990,
4152    volume      = 33,
4153    number      = 2,
4154    pages       = {164-172},
4155}
4156
4157@article{Yemini85,
4158    keywords    = {exception handling},
4159    contributer = {pabuhr@plg},
4160    author      = {Shaula Yemini and Daniel M. Berry},
4161    title       = {A Modular Verifiable Exception-Handling Mechanism},
4162    journal     = toplas,
4163    month       = apr,
4164    year        = 1985,
4165    volume      = 7,
4166    number      = 2,
4167    pages       = {214-243},
4168}
4169
4170@article{Buhr95b,
4171    keywords    = {concurrency, monitors, classification},
4172    contributer = {pabuhr@plg},
4173    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4174    title       = {Monitor Classification},
4175    journal     = acmcs,
4176    volume      = 27,
4177    number      = 1,
4178    month       = mar,
4179    year        = 1995,
4180    pages       = {63-107},
4181}
4182
4183@article{Hoare74,
4184    keywords    = {monitor},
4185    contributer = {pabuhr@plg},
4186    author      = {C. A. R. Hoare},
4187    title       = {Monitors: An Operating System Structuring Concept},
4188    journal     = cacm,
4189    volume      = 17,
4190    number      = 10,
4191    month       = oct,
4192    year        = 1974,
4193    pages       = {549-557},
4194    annote      = {
4195    }
4196}
4197
4198@inbook{Buhr99a,
4199    keywords    = {concurrency, monitors, classification},
4200    contributer = {pabuhr@plg},
4201    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4202    title       = {Encyclopedia of Computer Science and Technology},
4203    chapter     = {Monitor Taxonomy},
4204    publisher   = {Marcel Dekker, Inc},
4205    volume      = {40, supplement 25},
4206    year        = 1999,
4207    pages       = {191-212},
4208}
4209%    editor     = {Allen Kent and James G. Williams},
4210
4211@manual{MPI,
4212    keywords    = {MPI},
4213    contributer = {pabuhr@plg},
4214    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
4215    organization= {Message Passing Interface Forum},
4216    address     = {University of Tennessee, Knoxville, Tennessee},
4217    month       = jun,
4218    year        = 2015,
4219    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}}},
4220}
4221
4222@article{multilisp,
4223    keywords    = {futures, scheme},
4224    contributer = {gjditchfield@plg},
4225    author      = {Halstead, Jr.,Robert H.},
4226    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
4227    journal     = toplas,
4228    volume      = 7,
4229    number      = 4,
4230    pages       = {501-538},
4231    month       = oct,
4232    year        = 1985,
4233    comment     = {
4234        (future E) begins evaluating the expression E, and
4235        returns a ``future'' representing the value.  When evaluation is
4236        finished, the value of E replaces the future.  Operations that need
4237        the future's value suspend until it is available.  Assignment and
4238        parameter passing do not suspend.  Future introduces concurrency
4239        between the calculation of a value and its use; reference to
4240        futures is a synchronization mechanism.
4241
4242        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4243        applies F to the arguments.  pcall can be built from future and a
4244        ``touch'' operation.  pcall is included because it may not be easy
4245        to determine that there are no critical sections between the future
4246        expression and the code between the future call and the value's
4247        first use.
4248
4249        (delay E) is like future, but E's process does not begin until its
4250        value is needed.  It provides lazy evaluation.  Replacing delay
4251        with future would launch an infinite number of processes.
4252    }
4253}
4254
4255@techreport{Bretthauer89,
4256    keywords    = {multiple inheritance},
4257    contributer = {pabuhr@plg},
4258    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp}, 
4259    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4260    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4261    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4262    number      = {Arbeitspapiere der GMD 415},
4263    month       = nov,
4264    year        = 1989,
4265}
4266
4267@inproceedings{c++:multinh,
4268    keywords    = {C++, multiple inheritance, implementation},
4269    contributer = {gjditchfield@plg},
4270    author      = {Bjarne Stroustrup},
4271    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4272    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
4273    month       = may, year = 1987
4274}
4275
4276@inproceedings{st:mult,
4277    keywords    = {smalltalk, multiple inheritance, implementation},
4278    contributer = {gjditchfield@plg},
4279    author      = {Daniel H. H. Ingalls and A. H. Borning},
4280    title       = {Multiple Inheritance in Smalltalk-80},
4281    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
4282    month       = aug,
4283    year        = 1982,
4284    pages       = {234-238},
4285    organization= {American Association for Artificial Intelligence},
4286    comment     = {
4287        Methods are looked up in the current class, the superclasses, the
4288        supersuperclasses, etc.  The same method can be inherited
4289        repeatedly, but having different methods for the same message is an
4290        error.  Only one copy is made for multiply-inherited fields.
4291
4292        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
4293        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4294        super m}.  {\tt all.m} invokes all inherited versions of m.
4295
4296        Methods on the first-superclass chain are found as usual.  Methods
4297        from other superclasses are copied into the class dictionary.  An
4298        error method is created if inherited methods conflict.  The parser
4299        is changed to allow compound selectors.  {\tt Object
4300        messageNotUnderstood} is changed to look for compound selectors and
4301        dynamically add a method with the right name and body to the class.
4302        When methods are edited, they are copied into subclasses and
4303        compound selector versions are deleted, as appropriate.
4304    }
4305}
4306
4307@article{Lamport86I,
4308    keywords    = {software solutions, N-thread, mutual exclusions},
4309    contributer = {pabuhr@plg},
4310    author      = {Leslie Lamport},
4311    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4312    journal     = jacm,
4313    volume      = 33,
4314    number      = 2,
4315    month       = apr,
4316    year        = 1986,
4317    pages       = {313--326},
4318    numpages    = {14},
4319    publisher   = {ACM},
4320    address     = {New York, NY, USA},
4321}
4322
4323@article{Lamport86II,
4324    keywords    = {software solutions, N-thread, mutual exclusions},
4325    contributer = {pabuhr@plg},
4326    author      = {Leslie Lamport},
4327    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4328    journal     = jacm,
4329    volume      = 33,
4330    number      = 2,
4331    month       = apr,
4332    year        = 1986,
4333    pages       = {327--348},
4334    numpages    = {22},
4335    publisher   = {ACM},
4336    address     = {New York, NY, USA},
4337}
4338
4339@article{Burns78,
4340    keywords    = {hardware, N-process solution, O(N)},
4341    contributer = {pabuhr@plg},
4342    author      = {James E. Burns},
4343    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4344    journal     = {SIGACT News},
4345    volume      = 10,
4346    number      = 2,
4347    month       = {Summer},
4348    year        = 1978,
4349    pages       = {42-47},
4350}
4351
4352@inproceedings{Burns80,
4353    keywords    = {N-process software solution},
4354    contributer = {pabuhr@plg},
4355    author      = {James E. Burns and Nancy A. Lynch},
4356    title       = {Mutual Exclusion using Indivisible Reads and Writes},
4357    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4358    year        = 1980,
4359    pages       = {833-842},
4360    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]},
4361    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4362}
4363
4364@article{Peterson81,
4365    keywords    = {concurrency, critical section},
4366    contributer = {pabuhr@plg},
4367    author      = {G. L. Peterson},
4368    title       = {Myths About the Mutual Exclusion Problem},
4369    journal     = ipl,
4370    year        = 1981,
4371    month       = jun,
4372    volume      = 12,
4373    number      = 3,
4374    pages       = {115-116},
4375}
4376
4377% N
4378
4379@article{Haddon77,
4380    keywords    = {monitors, nested monitor calls},
4381    contributer = {pabuhr@plg},
4382    author      = {Bruce K. Haddon},
4383    title       = {Nested Monitor Calls},
4384    journal     = osr,
4385    volume      = 11,
4386    number      = 4,
4387    month       = oct,
4388    year        = 1977,
4389    pages       = {18-23},
4390}
4391
4392@inproceedings{nesting,
4393    keywords    = {},
4394    contributer = {gjditchfield@plg},
4395    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4396    title       = {Nesting in {Ada} Programs is for the Birds},
4397    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4398        Programming Language},
4399    year        = 1980,
4400    month       = dec, pages = {139-145},
4401    note        = {SIGPLAN Notices, v. 15, n. 11},
4402    abstract    = {
4403        Given a data abstraction construct like the Ada package and in the
4404        light of current thoughts on programming methodology, we feel that
4405        nesting is an anachronism.  In this paper we propose a nest-free
4406        program style for Ada that eschews nested program units and
4407        declarations within blocks and instead heavily utilizes packages
4408        and context specifications as mechanisms for controlling
4409        visibility.  We view this proposal as a first step toward the
4410        development of programming methods that exploit the novel language
4411        features available in Ada.  Consideration of this proposal's
4412        ramifications for data flow, control flow, and overall program
4413        structure substantiates our contention that a tree structure is
4414        seldom a natural representation of a program and that nesting
4415        therefore generally interferes with program development and
4416        readability.
4417    }
4418}
4419
4420@inproceedings{Buhr88,
4421    keywords    = {nested classes, persistence},
4422    contributer = {pabuhr@plg},
4423    author      = {P. A. Buhr and C. R. Zarnke},
4424    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
4425    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4426    publisher   = {Springer},
4427    volume      = 322,
4428    editor      = {S. Gjessing and K. Nygaard},
4429    address     = {Oslo, Norway},
4430    month       = aug,
4431    year        = 1988,
4432    pages       = {128-145},
4433    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4434}
4435
4436@inproceedings{Thompson90new,
4437    keywords    = {Plan 9},
4438    contributer = {pabuhr@plg},
4439    title       = {A New {C} Compiler},
4440    author      = {Ken Thompson},
4441    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
4442    year        = 1990,
4443    pages       = {41--51},
4444    note        = {\href{http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}{http://\-doc.cat-v.org/\-bell\_labs/\-new\_c\_compilers/\-new\_c\_compiler.pdf}},
4445}
4446
4447@article{Trono94,
4448    author      = {John A. Trono},
4449    title       = {A New Exercise in Concurrency},
4450    journal     = {SIGCSE Bulletin},
4451    volume      = {26},
4452    number      = {3},
4453    month       = sep,
4454    year        = {1994},
4455    pages       = {8-10},
4456    publisher   = {ACM},
4457    address     = {New York, NY, USA},
4458}
4459
4460@article{Lamport74,
4461    keywords    = {concurrency, N-Process solution, O(N)},
4462    contributer = {pabuhr@plg},
4463    author      = {Leslie Lamport},
4464    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
4465    journal     = cacm,
4466    month       = aug,
4467    year        = 1974,
4468    volume      = 17,
4469    number      = 8,
4470    pages       = {453-455},
4471}
4472
4473@article{landin,
4474    keywords    = {},
4475    contributer = {gjditchfield@plg},
4476    author      = {P. J. Landin},
4477    title       = {The Next 700 Programing Languages},
4478    journal     = cacm,
4479    year        = 1966,
4480    volume      = 9,
4481    pages       = {157-164},
4482}
4483
4484@article{Herlihy05,
4485    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4486    contributer = {pabuhr@plg},
4487    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4488    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4489    journal     = tocs,
4490    volume      = 23,
4491    number      = 2,
4492    month       = may,
4493    year        = 2005,
4494    pages       = {146-196},
4495    numpages    = {51},
4496    publisher   = {ACM},
4497    address     = {New York, NY, USA},
4498}
4499
4500% O
4501
4502@inproceedings{oop:abcl/1,
4503    keywords    = {concurrency, OOPL, futures},
4504    contributer = {gjditchfield@plg},
4505    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4506    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
4507    crossref    = "OOPSLA86",
4508    pages       = {258-268},
4509    comment     = {
4510        Actions for messages sent to an object are executed concurrently
4511        iff the object has no members.  A select construct specifies a set
4512        of message patterns.
4513
4514        Express messages have priority.  If an express message arrives
4515        while an ordinary message is being processed, the action for the
4516        ordinary message is suspended or aborted and the action for the
4517        express message is executed.  The sender decides which class a
4518        message belongs in.  Non-interruptible sections can be defined.
4519
4520        Message sends can be non-blocking, or can block until a reply is
4521        received, at the sender's option.  The receiver can continue to
4522        execute after sending the reply.
4523
4524        Replies can send back ``futures'', and put values in them later.
4525        Futures are queues of values, not single values.  The caller can
4526        use a ``ready?'' predicate to test for empty queue, or can use
4527        operations to get the first or all queue elements; these operations
4528        block if the queue is empty.
4529    }
4530}
4531
4532@techreport{Schmidt95,
4533    keywords    = {ACE, concurrency, library},
4534    contributer = {pabuhr@plg},
4535    author      = {Douglas C. Schmidt},
4536    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4537    institution = {Washington University in St. Louis},
4538    year        = 1995,
4539    number      = 31,
4540    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4541}
4542
4543@inproceedings{OOEx,
4544    keywords    = {Exceptions, object-oriented programming languages},
4545    contributer = {gjditchfield@plg},
4546    author      = {Christophe Dony},
4547    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
4548    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
4549    year        = 1988,
4550    pages       = {146-161},
4551    editor      = {S. Gjessing and K. Nygaard},
4552    organization= {DND, The Norwegian Computer Society},
4553    publisher   = {Springer},
4554    comment     = {
4555           Objectives:
4556           - Users can define new exceptions.
4557           - Default handlers can be attached to exceptions.
4558           - Handlers can be attached to classes.
4559           - Handlers can be attached to dynamic entities (expressions).
4560           - Exceptions propagate first along the invocation chain.
4561           - Exceptions should be hierarchically organized classes.
4562           - Handlers should take into account the exception hierarchy (i.e.,
4563             should handle raising of sub-exceptions).
4564           The ``exceptional-event'' class has two subclasses.  ``Warning''
4565           has a ``resume'' method, and ``error'' has ``exit'' and
4566           ``retry'' methods.  Signalling an exception creates an instance
4567           of the exception, whose members are used to pass information
4568           back to the handler.  Handlers are instances of class
4569           ``protect-handler'' with a method ``protect {\em expression}'',
4570           or are methods defined for the class or the exception.
4571    }
4572}
4573
4574@article{CommonObjects,
4575    author      = {A. Snyder},
4576    title       = {Object-Oriented Programming for Common Lisp},
4577    address     = {Palo Alto CA},
4578    year        = 1985,
4579    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4580    journal     = {Report ATC-85-1},
4581}
4582
4583@book{objective-c,
4584    keywords    = {},
4585    author      = {Brad J. Cox},
4586    title       = {Object-oriented programming; an evolutionary approach},
4587    publisher   = {Addison-Wesley},
4588    address     = {Boston},
4589    year        = 1986
4590}
4591
4592@manual{obj-c-book,
4593    keywords    = {objective-c},
4594    contributor = {a3moss@uwaterloo.ca},
4595    author      = {{Objective-C}},
4596    title       = {The {Objective-C} Programming Language},
4597    organization= {Apple Computer Inc.},
4598    address     = {Cupertino, CA},
4599    year        = 2003
4600}
4601
4602@online{xcode7,
4603    keywords    = {objective-c},
4604    contributor = {a3moss@uwaterloo.ca},
4605    author      = {{Xcode}},
4606    title       = {{Xcode} 7 Release Notes},
4607    year        = 2015,
4608    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}},
4609    urldate     = {2017-04-04}
4610}
4611
4612@book{Beta,
4613    keywords    = {Beta, object oriented, concurrency, exceptions},
4614    contributer = {pabuhr@plg},
4615    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
4616    title       = {Object-oriented Programming in the {BETA} Programming Language},
4617    publisher   = {Addison-Wesley},
4618    address     = {Boston},
4619    year        = 1993,
4620}
4621
4622@article{Flavors,
4623    author      = {D. A. Moon},
4624    title       = {Object-Oriented Programming with Flavors},
4625    address     = {Portland OR},
4626    month       = sep,
4627    year        = 1986,
4628    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
4629}
4630
4631@article{Buhr00b,
4632    keywords    = {concurrency, C++, real-time},
4633    contributer = {pabuhr@plg},
4634    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
4635    title       = {Object-Oriented Real-Time Concurrency},
4636    journal     = sigplan,
4637    volume      = 35,
4638    number      = 10,
4639    month       = oct,
4640    year        = 2000,
4641    pages       = {29-46},
4642    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
4643}
4644
4645@book{Meyer88,
4646    keywords    = {Eiffel},
4647    contributer = {pabuhr@plg},
4648    author      = {Bertrand Meyer},
4649    title       = {Object-oriented Software Construction},
4650    publisher   = {Prentice-Hall},
4651    address     = {Englewood Cliffs},
4652    year        = {1988},
4653    series      = {Prentice-Hall International Series in Computer Science},
4654}
4655
4656@article{objectPascal,
4657    keywords    = {objects, modules},
4658    contributer = {gjditchfield@plg},
4659    author      = {Larry Tesler},
4660    title       = {Object Pascal Report},
4661    journal     = {Structured Language World},
4662    year        = 1985,
4663    volume      = 9,
4664    number      = 3,
4665}
4666
4667@misc{obj-c:next,
4668    keywords    = {categories, protocols, Objective C},
4669    contributor = {gjditchfield@angus},
4670    author      = {NeXT Computer, Inc.},
4671    title       = {Objective C Extensions},
4672    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
4673    year        = 1993
4674}
4675
4676@book{Galletly96,
4677    keywords    = {occam},
4678    author      = {John Galletly},
4679    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
4680    publisher   = {{UCL} (University College London) Press},
4681    address     = {London},
4682    edition     = {2nd},
4683    year        = 1996,
4684}
4685
4686@techreport{Morrison88,
4687    keywords    = {objects, concurrency, persistence},
4688    contributer = {pabuhr@plg},
4689    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
4690    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
4691    institution = {Department of Computational Science, University of St. Andrews, Scotland},
4692    number      = {PPRR 57},
4693    month       = jan,
4694    year        = 1988,
4695}
4696
4697@article{Peterson73,
4698    keywords    = {goto, structured programming},
4699    contributer = {pabuhr@plg},
4700    author      = {W. W. Peterson and T. Kasami and N. Tokura},
4701    title       = {On the Capabilities of While, Repeat, and Exit Statements},
4702    journal     = cacm,
4703    month       = aug,
4704    year        = 1973,
4705    volume      = 16,
4706    number      = 8,
4707    pages       = {503-512}
4708}
4709
4710@article{Baker82,
4711    keywords    = {compilation},
4712    contributer = {gjditchfield@plg},
4713    author      = {Theodore P. Baker},
4714    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
4715    journal     = toplas,
4716    year        = 1982,
4717    month       = oct,
4718    volume      = 4,
4719    number      = 4,
4720    pages       = {601-614},
4721    abstract    = {
4722        A simple method is presented for detecting ambiguities and finding
4723        the correct interpretations of expressions in the programming
4724        language Ada.  Unlike previously reported solutions to this
4725        problem, which require multiple passes over a tree structure, the
4726        method described here operates in one bottom-up pass, during which
4727        a directed acyclic graph is produced.  The correctness of this
4728        approach is demonstrated by a brief formal argument.
4729    },
4730    comment     = {
4731        See also \cite{D:overload}.
4732        }
4733}
4734
4735@techreport{OpenMP,
4736    keywords    = {concurrency, openmp, spmd},
4737    contributer = {pabuhr@plg},
4738    author      = {OpenMP Architecture Review Board},
4739    title       = {OpenMP Application Program Interface, Version 4.0},
4740    month       = jul,
4741    year        = 2013,
4742    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://\-www.openmp.org/\-mp-documents/\-OpenMP4.0.0.pdf}}},
4743}
4744
4745@book{Deitel04,
4746    keywords    = {concurrency, operating systems},
4747    contributer = {pabuhr@plg},
4748    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
4749    title       = {Operating Systems},
4750    publisher   = {Pearson Prentice-Hall},
4751    address     = {Englewood Cliffs},
4752    year        = 2004,
4753    edition     = {3rd},
4754}
4755
4756@book{Stalling98,
4757    keywords    = {concurrency, operating systems},
4758    contributer = {pabuhr@plg},
4759    author      = {William Stallings},
4760    title       = {Operating Systems: Internals and Design Principles},
4761    publisher   = {Prentice-Hall},
4762    address     = {Englewood Cliffs},
4763    year        = 1998,
4764    edition     = {3rd},
4765}
4766
4767@book{Stalling01,
4768    keywords    = {concurrency, operating systems},
4769    contributer = {pabuhr@plg},
4770    author      = {William Stallings},
4771    title       = {Operating Systems: Internals and Design Principles},
4772    publisher   = {Prentice-Hall},
4773    address     = {Englewood Cliffs},
4774    year        = 2001,
4775    edition     = {4th},
4776}
4777
4778@book{Silberschatz91,
4779    keywords    = {concurrency, operating systems},
4780    contributer = {pabuhr@plg},
4781    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
4782    title       = {Operating System Concepts},
4783    publisher   = {Addision-Wesley},
4784    address     = {Boston},
4785    year        = 1991,
4786    edition     = {3rd},
4787}
4788
4789@book{Tanenbaum87,
4790    keywords    = {concurrency, operating systems},
4791    contributer = {pabuhr@plg},
4792    author      = {Andrew S. Tanenbaum},
4793    title       = {Operating Systems : Design and Implementation},
4794    publisher   = {Prentice-Hall},
4795    address     = {Englewood Cliffs},
4796    series      = {Software Series},
4797    year        = 1987,
4798}
4799
4800@book{Hansen73,
4801    keywords    = {monitors},
4802    contributer = {pabuhr@plg},
4803    author      = {Per {Brinch Hansen}},
4804    title       = {Operating System Principles},
4805    publisher   = {Prentice-Hall},
4806    address     = {Englewood Cliffs},
4807    year        = 1973,
4808}
4809
4810@book{Bic03,
4811    keywords    = {concurrency, operating systems},
4812    contributer = {pabuhr@plg},
4813    author      = {Lubomir F. Bic and Alan C. Shaw},
4814    title       = {Operating System Principles},
4815    publisher   = {Prentice-Hall},
4816    address     = {Englewood Cliffs},
4817    year        = 2003,
4818}
4819
4820@techreport{milner88,
4821    keywords    = {},
4822    contributer = {gjditchfield@plg},
4823    author      = {Robin Milner},
4824    title       = {Operational and Algebraic Semantics of Concurrent Processes},
4825    institution = {Laboratory for Foundations of Computer Science},
4826    year        = 1988,
4827    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
4828    month       = feb,
4829    number      = {ECS-LFCS-88-46}
4830}
4831
4832@article{Ganzinger80,
4833    contributer = {a3moss@uwaterloo.ca},
4834    author      = {Ganzinger, Harald and Ripken, Knut},
4835    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
4836    journal     = {SIGPLAN Notices},
4837    issue_date  = {February 1980},
4838    volume      = {15},
4839    number      = {2},
4840    month       = feb,
4841    year        = {1980},
4842    issn        = {0362-1340},
4843    pages       = {30--42},
4844    numpages    = {13},
4845    url         = {http://doi.acm.org/10.1145/947586.947589},
4846    doi         = {10.1145/947586.947589},
4847    publisher   = {ACM},
4848    address     = {New York, NY, USA}
4849}
4850
4851@article{Ford82,
4852    keywords    = {},
4853    contributer = {pabuhr@plg},
4854    author      = {G. Ford and B. Hansche},
4855    title       = {Optional, Repeatable, and Varying Type Parameters},
4856    journal     = sigplan,
4857    volume      = 17,
4858    number      = 2,
4859    month       = feb,
4860    year        = 1982,
4861    pages       = {41-48},
4862}
4863
4864@manual{pli,
4865    keywords    = {PL/I},
4866    contributer = {gjditchfield@plg},
4867    key         = {IBM},
4868    title       = {{OS} and {DOS} {PL/I} Reference Manual},
4869    organization= {International Business Machines},
4870    edition     = {1st},
4871    month       = sep,
4872    year        = 1981,
4873    note        = {Manual GC26-3977-0},
4874}
4875
4876@techreport{D:overload,
4877    keywords    = {overload resolution, compilation},
4878    contributer = {gjditchfield@plg},
4879    author      = {M. Dausmann et. al.},
4880    title       = {Overloading in {Ada}},
4881    institution = {Universitat Karlsruhe},
4882    year        = 1979,
4883    number      = {23/79},
4884    comment     = {
4885        Probably the earliest description of the two-pass (bottom-up,
4886        top-down) overload resolution algorithm. See also
4887        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
4888    }
4889}
4890
4891@article{EB87,
4892    keywords    = {packages, private types, assignment, equality},
4893    contributer = {gjditchfield@plg},
4894    author      = {J. Dana Eckart and Richard J. LeBlanc},
4895    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
4896    journal     = {Computer Languages},
4897    year        = 1987,
4898    volume      = 12,
4899    number      = {3/4},
4900    pages       = {163-172},
4901    abstract    = {
4902        Packages in the Ada language provide a mechanism for extending the
4903        language through the development of additional data types.  Such
4904        types can be better integrated into the language using operator
4905        overloading; however, key limitations prevent new types from being
4906        transparently integrated into the language.  Allowing function
4907        names to overload private type names would give a cleaner and
4908        clearer mechanism for building values of these types.  Furthermore,
4909        by allowing redefinitions of ``:='' and by making it easier to
4910        overload ``='' for private types, Ada coud be transformed into a
4911        more expressive language.
4912    }
4913}
4914
4915@article{PW:overload,
4916    keywords    = {compilation},
4917    contributer = {gjditchfield@plg},
4918    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
4919    title       = {Overloading in Preliminary {Ada}},
4920    journal     = sigplan,
4921    year        = 1980,
4922    month       = nov, volume = 15, number = 11, pages = {47-56},
4923    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language}, 
4924    comment     = {
4925        The two-pass (bottom-up, then top-down) algorithm, with a proof
4926        that two passes suffice.  See also \cite{D:overload}.
4927    }
4928}
4929
4930@article{SR,
4931    keywords    = {concurrency, messages, rendezvous},
4932    contributer = {pabuhr@plg},
4933    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
4934                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
4935    title       = {An Overview of the {SR} Language and Implementation},
4936    journal     = toplas,
4937    month       = jan,
4938    year        = 1988,
4939    volume      = 10,
4940    number      = 1,
4941    pages       = {51-86},
4942}
4943
4944% P
4945
4946@article{Andrews91,
4947    keywords    = {general concurrency},
4948    contributer = {pabuhr@plg},
4949    author      = {Gregory R. Andrews},
4950    title       = {Paradigms for Process Interaction in Distributed Programs},
4951    journal     = acmcs,
4952    volume      = 23,
4953    number      = 1,
4954    month       = mar,
4955    year        = 1991,
4956    pages       = {49-90},
4957}
4958
4959@book{PPC++,
4960    keywords    = {concurrency, parallel, distributed, C++},
4961    contributer = {pabuhr@plg},
4962    editor      = {Gregory V. Wilson and Paul Lu},
4963    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4964    publisher   = {MIT Press},
4965    series      = {Scientific and Engineering Computation Series},
4966    year        = 1996,
4967    pages       = {1-42},
4968}
4969
4970@incollection{Stroustrup96,
4971    keywords    = {concurrency, C++},
4972    contributer = {pabuhr@plg},
4973    author      = {Bjarne Stroustrup},
4974    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4975    editor      = {Gregory V. Wilson and Paul Lu},
4976    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4977    publisher   = {MIT Press},
4978    series      = {Scientific and Engineering Computation Series},
4979    year        = 1996,
4980    pages       = {xxvi-xxvii},
4981}
4982
4983@incollection{Yang96b,
4984    keywords    = {concurrency, C++},
4985    contributer = {pabuhr@plg},
4986    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
4987    editor      = {Gregory V. Wilson and Paul Lu},
4988    title       = {p{C}++},
4989    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4990    publisher   = {MIT Press},
4991    address     = {Cambridge},
4992    series      = {Scientific and Engineering Computation Series},
4993    pages       = {507-546},
4994    year        = 1996,
4995}
4996
4997@article{goguen84,
4998    keywords    = {},
4999    contributer = {gjditchfield@plg},
5000    author      = {Goseph A. Goguen},
5001    title       = {Parameterized Programming},
5002    journal     = ieeese,
5003    year        = 1984,
5004    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
5005    abstract    = {
5006        Parameterized programming is a powerful technique for the reliable
5007        reuse of software.  In this technique, modules are parameterized
5008        over very general interfaces that describe what properties of an
5009        environment are required for the module to work correctly.
5010        Reusability is enhanced by the flexibility of the parameterization
5011        mechanism proposed here.  Reliability is further enhanced by
5012        permitting interface requirements to include more than purely
5013        syntactic information.  This paper introduces three new ideas that
5014        seem especially useful in supporting parameterized programming: 1)
5015        {\em theories}, which declare global properties of program modules
5016        and interfaces; 2) {\em views}, which connect theories with program
5017        modules in an elegant way; and 3) {\em module expressions}, a kind
5018        of general structured program transformation which produces new
5019        modules by modifying and combining existing modules.  Although
5020        these ideas are illustrated with some simple examples in the OBJ
5021        programming language, they should also be taken as proposals for an
5022        Ada library system, for adding modules to Prolog, and as
5023        considerations for future language design efforts.  OBJ is an
5024        ultra-high level programming language, based upon rewrite rules,
5025        that incorporates these ideas, and many others from modern
5026        programming methodology.
5027    }
5028}
5029
5030@inproceedings{c++:templates,
5031    author      = {Bjarne Stroustrup},
5032    contributer = {gjditchfield@plg},
5033    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5034    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5035    organization= {USENIX Association},
5036    year        = 1988, pages = {1-18}
5037}
5038
5039@inproceedings{Boehm85,
5040    keywords    = {second-order unification},
5041    contributer = {gjditchfield@plg},
5042    author      = {Hans-J. Boehm},
5043    title       = {Partial Polymorphic Type Inference is Undecidable},
5044    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
5045    year        = 1985,
5046    pages       = {339-345},
5047    organization= {IEEE Computer Society},
5048    publisher   = {IEEE Computer Society Press},
5049    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5050    summary     = {
5051        Given a base typed lambda calculus with function types, type
5052        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5053        then type inference for the partially typed language
5054        \begin{eqnarray}
5055        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
5056        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
5057        e \tau                  &\Rightarrow& e ?
5058        \end{eqnarray}
5059        is undecidable.
5060    }
5061}
5062
5063@book{Pascal,
5064    keywords    = {Pascal},
5065    contributer = {pabuhr@plg},
5066    author      = {Kathleen Jensen and Niklaus Wirth},
5067    title       = {{P}ascal User Manual and Report, ISO Pascal Standard},
5068    publisher   = {Springer--Verlag},
5069    year        = 1991,
5070    edition     = {4th},
5071    note        = {Revised by Andrew B. Mickel and James F. Miner}
5072}
5073
5074@book{Pascal:old,
5075    keywords    = {Pascal},
5076    contributer = {pabuhr@plg},
5077    author      = {Kathleen Jensen and Niklaus Wirth},
5078    title       = {{P}ascal User Manual and Report},
5079    publisher   = {Springer--Verlag},
5080    year        = 1975,
5081    edition     = {1st},
5082}
5083
5084@article{Turba85,
5085    keywords    = {Pascal, exception handling, inheritance},
5086    contributer = {pabuhr@plg},
5087    author      = {Thomas N. Turba},
5088    title       = {The {P}ascal Exception Handling Proposal},
5089    journal     = sigplan,
5090    volume      = 20,
5091    number      = 8,
5092    month       = aug,
5093    year        = 1985,
5094    pages       = {93-98},
5095}
5096
5097@manual{Pascal/VS,
5098    keywords    = {PL/I},
5099    contributer = {pabuhr@plg},
5100    key         = {IBM},
5101    title       = {{P}ascal/{VS} Language Reference Manual},
5102    organization= {International Business Machines},
5103    edition     = {1st},
5104    year        = 1981,
5105    note        = {Manual SH20-6168-1},
5106}
5107
5108@article{Anderson90,
5109    keywords    = {spin locks, back off, performance},
5110    contributer = {pabuhr@plg},
5111    author      = {Thomas E. Anderson},
5112    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5113    journal     = ieeepds,
5114    month       = jan,
5115    year        = 1990,
5116    volume      = 1,
5117    number      = 1,
5118    pages       = {6-16},
5119}
5120
5121@article{poly,
5122    keywords    = {Poly, Standard ML, Russell, persistence},
5123    contributer = {gjditchfield@plg},
5124    author      = {David C. J. Matthews},
5125    title       = {Poly Manual},
5126    journal     = sigplan,
5127    month       = sep, year = 1985,
5128    volume      = 20, number = 9, pages = {52-76}
5129}
5130
5131@techreport{Atkinson87b,
5132    keywords    = {naming, persistence},
5133    contributer = {pabuhr@plg},
5134    author      = {M. P. Atkinson and R. Morrison},
5135    title       = {Polymorphic Names and Iterations},
5136    institution = {Universities of Glasgow and St. Andrews, Scotland},
5137    number      = {PPRR-53-87},
5138    month       = nov,
5139    year        = 1987,
5140}
5141
5142@book{Harland,
5143    keywords    = {},
5144    author      = {David M. Harland},
5145    title       = {Polymorphic Programming Languages: Design and Implementation},
5146    publisher   = {Ellis Horwood},
5147    year        = 1984,
5148    series      = {Computers and their Applications},
5149    address     = {Market Cross House, Cooper Street, Chichester, West Sussex,
5150        PO19 1EB, England},
5151    summary     = {
5152        The principles of Procedural Abstraction, Data Type Completeness,
5153        Declaration Correspondence, and Orthogonality are ruthlessly applied
5154        to the design of a polymorphic language.
5155    }
5156}
5157
5158@unpublished{poa,
5159    keywords    = {Force N, type inference, reusability, transcendance},
5160    contributer = {gjditchfield@plg},
5161    author      = {G. V. Cormack and A. K. Wright},
5162    title       = {Polymorphism, Overloading, and Abstraction},
5163    note        = {personal communication}
5164}
5165
5166@inproceedings{forceone:impl,
5167    keywords    = {Parametric polymorphism, ForceOne},
5168    contributer = {gjditchfield@plg},
5169    author      = {G. V. Cormack and A. K. Wright},
5170    title       = {Polymorphism in the Compiled Language {ForceOne}},
5171    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5172    month       = jan,
5173    year        = 1987,
5174    pages       = {284-292},
5175}
5176
5177@incollection{POOL-T,
5178    keywords    = {objects, concurrency},
5179    contributer = {pabuhr@plg},
5180    author      = {Pierre America},
5181    title       = {POOL-T: A Parallel Object-Oriented Language},
5182    booktitle   = {Object-Oriented Concurrent Programming},
5183    publisher   = {The MIT Press},
5184    year        = 1987,
5185    pages       = {199-220},
5186    editor      = {Akinori Yonezawa and Mario Tokoro}
5187}
5188
5189@article{Hardgrave76,
5190    keywords    = {positional, keyword, parameters, arguments},
5191    contributer = {pabuhr@plg},
5192    author      = {W. T. Hardgrave},
5193    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
5194    journal     = sigplan,
5195    volume      = 11,
5196    number      = 5,
5197    month       = may,
5198    year        = 1976,
5199    pages       = {52-58},
5200}
5201
5202@book{PowerPC,
5203    key         = {PowerPC processor},
5204    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5205    publisher   = {Freescale Semiconductor},
5206    volume      = {MPCFPE32B},
5207    edition     = {Rev. 3},
5208    month       = 9,
5209    year        = 2005,
5210}
5211
5212@article{Ada:preliminary,
5213    keywords    = {Ada},
5214    contributer = {pabuhr@plg},
5215    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5216                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5217                   and John G. P. Barnes and Olivier Roubine},
5218    title       = {Preliminary {Ada} Reference Manual},
5219    journal     = sigplan,
5220    volume      = 14,
5221    number      = 6,
5222    month       = jun,
5223    year        = 1979,
5224    note        = {Part A},
5225}
5226
5227@techreport{Forsythe,
5228    author      = {John C. Reynolds},
5229    title       = {Preliminary Design of the Programming Language {Forsythe}},
5230    institution = {Carnegie Mellon University},
5231    number      = {CMU-CS-88-159},
5232    month       = jun,
5233    year        = 1988,
5234}
5235
5236@article{PRESTO,
5237    keywords    = {concurrency, threads},
5238    contributer = {dgharriss@plg},
5239    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5240    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
5241    journal     = spe,
5242    volume      = 18,
5243    number      = 8,
5244    month       = aug,
5245    year        = 1988,
5246    pages       = {713-732}
5247}
5248
5249@book{Ben-Ari82,
5250    keywords    = {concurrency, parallel, programming languages},
5251    contributer = {pabuhr@plg},
5252    author      = {Mordechai Ben-Ari},
5253    title       = {Principles of Concurrent Programming},
5254    publisher   = {Prentice-Hall International},
5255    address     = {Englewood Cliffs},
5256    year        = 1982,
5257}
5258
5259@book{Tennent81,
5260    author      = {R. D. Tennent},
5261    title       = {Principles of Programming Languages},
5262    publisher   = {Prentice-Hall International},
5263    address     = {Englewood Cliffs},
5264    year        = 1981,
5265    series      = {Series in Computer Science}
5266}
5267
5268@article{Lister77,
5269    keywords    = {monitors, nested monitor calls},
5270    contributer = {pabuhr@plg},
5271    author      = {Andrew Lister},
5272    title       = {The Problem of Nested Monitor Calls},
5273    journal     = osr,
5274    volume      = 11,
5275    number      = 3,
5276    month       = jul,
5277    year        = 1977,
5278    pages       = {5-7},
5279}
5280
5281@article{psa:persistence,
5282    keywords    = {persistence, first-class procedures, closure, PS-Algol,
5283        Abstract Data Types},
5284    contributer = {gjditchfield@plg},
5285    author      = {Malcolm P. Atkinson and Ronald Morrison},
5286    title       = {Procedures as Persistent Data Objects},
5287    journal     = toplas,
5288    volume      = {7},    number = {4},
5289    pages       = {539-559},
5290    month       = oct, year = 1985,
5291    comment     = {
5292        PS-Algol has ``structures'', accessible only through ``pntrs''.
5293        Pntrs can refer to any type of structure.  Field references involve
5294        a run-time check.  This, plus first-class procedures, can simulate
5295        abstract data types.  Procedure variables operating on pntrs
5296        simulate ADT operations.  A block defines a structure to implement
5297        the ADT, and assigns procedures to the variables.  Functions
5298        returning structures containing procedures  simulate multiple
5299        implementations and parameterized ADTs.
5300
5301        An outer procedure that returns a procedure that contains
5302        (non-local) references to the outer procedure's parameters
5303        implements partial evaluation.
5304
5305        Modules can be simulated like ADT's.  The module itself is a
5306        structure instance that is placed in persistent storage, and the
5307        module is imported by fetching it from the persistent store.
5308        Multiple instances of modules are easy.  Installation of new
5309        versions can be done by replacing the version in the database.
5310    }
5311}
5312
5313@article{Procol89,
5314    keywords    = {active objects, object-oriented languages,
5315        object-based languages, explicit per-object protocol},
5316    contributer = {akgoel@plg},
5317    author      = {Jan van den Bos and Chris Laffra},
5318    title       = {PROCOL: A Parallel Object Language with Protocols},
5319    journal     = sigplan,
5320    volume      = 24,
5321    number      = 10,
5322    month       = oct,
5323    year        = 1989,
5324    pages       = {95-102},
5325    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5326    abstract    = {},
5327}
5328
5329@book{Butenhof97,
5330    keywords    = {PThreads, concurrency},
5331    contributer = {pabuhr@plg},
5332    author      = {David R. Butenhof},
5333    title       = {Programming with {POSIX} Threads},
5334    publisher   = {Addison-Wesley},
5335    address     = {Boston},
5336    series      = {Professional Computing},
5337    year        = 1997,
5338}
5339
5340@book{SETL,
5341    keywords    = {SETL},
5342    contributer = {pabuhr@plg},
5343    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5344    title       = {Programming with Sets: An Introduction to {SETL}},
5345    publisher   = {Springer},
5346    address     = {New York, NY, USA},
5347    year        = 1986,
5348}
5349
5350@book{Genuys68,
5351    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
5352    contributer = {pabuhr@plg},
5353    editor      = {F. Genuys},
5354    title       = {Programming Languages},
5355    publisher   = {Academic Press},
5356    address     = {London, New York},
5357    year        = 1968,
5358    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5359}
5360
5361@manual{ANSI99:C,
5362    keywords    = {ANSI C 99},
5363    contributer = {pabuhr@plg},
5364    title       = {Programming Languages -- {C}},
5365    organization= {International Standard ISO/IEC 9899:1999 (E)},
5366    publisher   = {American National Standards Institute},
5367    address     = {www.ansi.org},
5368    year        = 1999,
5369}
5370
5371@manual{ANSI98:C++,
5372    keywords    = {ANSI C++ 98},
5373    contributer = {pabuhr@plg},
5374    key         = {C++98},
5375    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5376    organization= {International Standard ISO/IEC 14882:1998 (E)},
5377    publisher   = {American National Standards Institute},
5378    address     = {www.ansi.org},
5379    year        = 1998,
5380}
5381
5382@manual{C++14,
5383    keywords    = {ISO/IEC C++ 14},
5384    contributer = {pabuhr@plg},
5385    author      = {C++14},
5386    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} ISO/IEC 14882:2014},
5387    edition     = {4th},
5388    publisher   = {International Standard Organization},
5389    address     = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5390    year        = 2014,
5391}
5392
5393@manual{MS:VisualC++,
5394    keywords    = {Microsoft Visual C++},
5395    contributer = {pabuhr@plg},
5396    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5397    organization= {Microsoft Corporation},
5398    year        = 2002,
5399    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
5400}
5401
5402@article{HasselBring00,
5403    keywords    = {concurrency, prototyping},
5404    contributer = {pabuhr@plg},
5405    author      = {Wilhelm Hasselbring},
5406    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
5407    journal     = acmcs,
5408    volume      = 32,
5409    number      = 1,
5410    month       = mar,
5411    year        = 2000,
5412    pages       = {43-79},
5413}
5414
5415@article{LLgen,
5416    keywords    = {ll(1), parser generator, separate compilation},
5417    contributer = {gjditchfield@plg},
5418    author      = {Dick Grune and Ceriel J. J. Jacobs},
5419    title       = {A Programmer-friendly LL(1) Parser Generator},
5420    journal     = spe,
5421    month       = jan, year = 1988,
5422    volume      = 18, number = 1, pages = {29-33},
5423    comment     = {
5424        LLgen generates C-language recursive-descent parsers.  The input
5425        contains procedure-like rules with alternation and repetition
5426        constructs on the right, and (typed) parameters on the left.
5427        C actions are specified between items in the right side.
5428        Alternation and repetition (reduce and shift) conflicts can be
5429        resolved statically or at run time.
5430
5431        A grammar can be specified in several files.  All files must be
5432        submitted to LLgen at once, but if the C file generated is no
5433        different from the old version, then the old version is not
5434        replaced and hence need not be recompiled, which saves lots of
5435        time.
5436
5437        When an incorrect token is found, the automatic error recovery
5438        algorithm discards tokens until an ``acceptable'' token is found;
5439        if the acceptable token is not correct, a correct one is inserted.
5440    }
5441}
5442
5443@techreport{russell,
5444    keywords    = {Russell},
5445    contributer = {gjditchfield@plg},
5446    author      = {H. Boehm and A. Demers and J. Donahue},
5447    title       = {A Programmer's Introduction to Russell},
5448    institution = {Rice University},
5449    year        = 1985,
5450    number      = {85-16}
5451}
5452
5453@techreport{PDM89,
5454    keywords    = {existential types, universal types},
5455    contributer = {gjditchfield@plg},
5456    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5457    title       = {Programming in Higher-Order Typed Lambda Calculi},
5458    institution = {School of Computer Science, Carnegie Mellon University},
5459    year        = 1989,
5460    address     = {Pittsburg, PA 15213-3890},
5461    month       = mar, number = {CMU-CS-89-111},
5462    abstract    = {
5463        This tutorial presents a hierarchy of increasingly powerful
5464        languages, beginning with Church's simply typed
5465        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5466        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5467        fragment of Girard's \(\omega\)-order polymorphic
5468        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
5469        the unusual style of programming that arises in these languages,
5470        where all functions are total and the primary control construct is
5471        iteration rather than general recursion.
5472    }
5473}
5474
5475@book{Modula-2,
5476    keywords    = {modules, coroutines},
5477    contributer = {pabuhr},
5478    author      = {Niklaus Wirth},
5479    title       = {Programming in Modula-2},
5480    publisher   = {Springer},
5481    address     = {New York},
5482    year        = 1988,
5483    edition     = {4th},
5484    series      = {Texts and Monographs in Computer Science},
5485}
5486
5487@manual{Ada,
5488    keywords    = {Ada, packages, tasks, exceptions},
5489    contributer = {pabuhr@plg},
5490    title       = {The Programming Language {Ada}: Reference Manual},
5491    author      = {Ada},
5492    organization= {United States Department of Defense},
5493    edition     = {{ANSI/MIL-STD-1815A-1983}},
5494    month       = feb,
5495    year        = 1983,
5496    note        = {Springer, New York},
5497}
5498
5499@manual{ada:old,
5500    keywords    = {Ada, packages, tasks, exceptions},
5501    contributer = {gjditchfield@plg},
5502    title       = {The Programming Language {Ada}: Reference Manual},
5503    organization= {United States Department of Defense},
5504    publisher   = {Springer},
5505    year        = 1981
5506}
5507
5508@book{Ghezzi,
5509    keywords    = {},
5510    author      = {Carlo Ghezzi and Mehdi Jazayeri},
5511    title       = {Programming Language Concepts},
5512    publisher   = {Wiley},
5513    year        = 1982
5514}
5515
5516@article{ConcurrentPascal,
5517    keywords    = {Concurrent Pascal},
5518    contributer = {pabuhr@plg},
5519    author      = {Per {Brinch Hansen}},
5520    title       = {The Programming Language Concurrent Pascal},
5521    journal     = ieeese,
5522    volume      = 2,
5523    month       = jun,
5524    year        = 1975,
5525    pages       = {199-206}
5526}
5527
5528@phdthesis{Buhr85:thesis,
5529    keywords    = {},
5530    contributer = {pabuhr@plg},
5531    author      = {P. A. Buhr},
5532    title       = {A Programming System},
5533    school      = {University of Manitoba},
5534    year        = {1985}
5535}
5536
5537@techreport{pierce91,
5538    keywords    = {typed lambda calculus},
5539    contributer = {gjditchfield@plg},
5540    author      = {Benjamin C. Pierce},
5541    title       = {Programming with Intersection Types, Union Types, and Polymorphism},
5542    institution = {Carnegie Mellon University},
5543    year        = 1991,
5544    month       = feb, number = "CMU-CS-91-106",
5545    annote      = {
5546        Discusses a typed lambda calculus with
5547        \begin{itemize}
5548        \item
5549        Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
5550        \tau_i\) for all \(i\).
5551        \item
5552        Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
5553        and with implicit coercions from \(tau_i\) to \(\tau\).  Only
5554        operations valid for both element types can be applied to the
5555        union; there are no projections.  Union types are to variant
5556        records as set union is to disjoint set union.
5557        \item
5558        Function types and universal quantification, with subtyping rules.
5559        When functions and arguments intersections, the result of
5560        application is the intersection of all valid combinations.
5561        \item
5562        Distribution rules for combinations of types.
5563        \item
5564        "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
5565        union, has type \(\tau\) if \(e'\) has that type with \(x\) having
5566        every element type of the union.
5567        \item
5568        "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
5569        typechecks \(e\) with \(t\) bound to each choice, and intersects
5570        the results.
5571        \end{itemize}
5572
5573        Examples include: type of "natural" numbers, treated as a union of
5574        "zero" and "positive" types; default parameters, faked by using an
5575        argument that is an intersection of a data type and a function
5576        taking an explicit argument.
5577
5578        Unions can be mostly faked, according to Mitchell:
5579        \[\tau_1\vee\tau_2 \equiv
5580             \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
5581    }
5582}
5583
5584@article{promises,
5585    keywords    = {futures, Argus, call streams, rpc},
5586    contributer = {gjditchfield@plg},
5587    author      = {Barbara Liskov and Liuba Shrira},
5588    title       = {Promises: Linguistic Support for Efficient Asynchronous
5589          Procedure Calls in Distributed Systems},
5590    journal     = sigplan,
5591    year        = 1988,
5592    month       = jul, volume = 23, number = 7, pages = {260-267},
5593    note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language
5594         Design and Implementation},
5595    abstract    = {
5596        This paper deals with the integration of an efficient asynchronous
5597        remote procedure call mechanism into a programming language.  It
5598        describes a new data type called a {\em promise} that was designed
5599        to support asynchronous calls.  Promises allow a caller to run in
5600        parallel with a call and to pick up the results of the call,
5601        including any exceptions it raises, in a convenient and type-safe
5602        manner.  The paper also discusses efficient composition of
5603        sequences of asynchronous calls to different locations in a
5604        network.
5605    }
5606}
5607
5608@article{Cook89,
5609    keywords    = {},
5610    contributer = {gjditchfield@plg},
5611    author      = {W. R. Cook},
5612    title       = {A Proposal for Making {Eiffel} Type-safe},
5613    journal     = {The Computer Journal},
5614    year        = 1989,
5615    volume      = 32, number = 4, pages = {305-311},
5616    abstract    = {
5617       
5618    }
5619}
5620
5621@inproceedings{Foxall79,
5622    keywords    = {},
5623    contributer = {pabuhr@plg},
5624    author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
5625    title       = {{PROTEL}: A High Level Language for Telephony},
5626    booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
5627    month       = nov,
5628    year        = 1979,
5629    pages       = {193-197},
5630}
5631
5632@techreport{PS-Algol,
5633    keywords    = {algol, persistence},
5634    contributer = {pabuhr@plg},
5635    key         = {PS-Algol},
5636    title       = {The {PS-Algol} Reference Manual, 4th Ed.},
5637    author      = {},
5638    institution = {University of Glasgow and St. Andrews, Scotland},
5639    number      = {PPRR 12},
5640    month       = jun,
5641    year        = 1987,
5642}
5643
5644@manual{Python,
5645    keywords    = {Python},
5646    contributer = {pabuhr},
5647    title       = {Python Reference Manual, Release 2.5},
5648    author      = {Guido van Rossum},
5649    organization= {Python Software Foundation},
5650    month       = sep,
5651    year        = 2006,
5652    note        = {Fred L. Drake, Jr., editor},
5653}
5654
5655% Q
5656
5657@article{Grossman06,
5658    keywords    = {Cyclone, existential types, polymorphism, type variables},
5659    contributer = {a3moss@plg},
5660    author      = {Dan Grossman},
5661    title       = {Quantified Types in an Imperative Language},
5662    journal     = toplas,
5663    issue_date  = {May 2006},
5664    volume      = {28},
5665    number      = {3},
5666    month       = may,
5667    year        = 2006,
5668    issn        = {0164-0925},
5669    pages       = {429-475},
5670    url         = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
5671    doi         = {10.1145/1133651.1133653},
5672    acmid       = {1133653},
5673    publisher   = {ACM},
5674    address     = {New York, NY, USA},
5675}
5676
5677@article{Hoare61,
5678    keywords    = {quick sort},
5679    contributer = {pabuhr@plg},
5680    author      = {C. A. R. Hoare},
5681    title       = {Algorithms 63/64: Partition/Quicksort},
5682    journal     = cacm,
5683    volume      = 4,
5684    number      = 7,
5685    month       = jul,
5686    year        = 1961,
5687    pages       = {321},
5688}
5689
5690% R
5691
5692@article{Ada:rationale:preliminary,
5693    keywords    = {Ada},
5694    contributer = {pabuhr@plg},
5695    author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
5696                   J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
5697    title       = {Rationale for the Design of the {ADA} Programming Language},
5698    journal     = sigplan,
5699    volume      = 14,
5700    number      = 6,
5701    month       = jun,
5702    year        = 1979,
5703    note        = {Part B},
5704}
5705
5706@book{Ada:rationale,
5707    keywords    = {Ada},
5708    contributer = {pabuhr@plg},
5709    author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
5710    title       = {Rationale for the Design of the {ADA} Programming Language},
5711    publisher   = {Under Secretary of Defense, Research and Engineering},
5712    year        = 1986,
5713    address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
5714}
5715
5716@manual{Ada95,
5717    keywords    = {Ada},
5718    contributer = {pabuhr@plg},
5719    title       = {{A}da Reference Manual},
5720    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5721    organization= {Intermetrics, Inc.},
5722    month       = dec,
5723    year        = 1995,
5724    note        = {Language and Standards Libraries}
5725}
5726
5727@manual{Ada12,
5728    keywords    = {ISO/IEC Ada},
5729    contributer = {pabuhr@plg},
5730    author      = {Ada12},
5731    title       = {Programming languages -- {Ada} ISO/IEC 8652:2012},
5732    edition     = {3rd},
5733    publisher   = {International Standard Organization},
5734    address     = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
5735    year        = 2012,
5736}
5737
5738@manual{Ada95:annotated,
5739    keywords    = {Ada},
5740    contributer = {pabuhr@plg},
5741    title       = {Annotated {A}da Reference Manual},
5742    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5743    organization = {Intermetrics, Inc.},
5744    month       = dec,
5745    year        = 1995,
5746    note        = {Language and Standards Libraries}
5747}
5748
5749@book{JavaRT00,
5750    keywords    = {real time, draft},
5751    contributer = {pabuhr@plg},
5752    author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
5753    title       = {The Real-Time Specification for {J}ava},
5754    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
5755    publisher   = {Addison-Wesley},
5756    address     = {Boston},
5757    year        = 2000,
5758}
5759
5760@manual{JavaRT99,
5761    organization= {Real Time for Java Experts Group},
5762    address     = {{\small\textsf{http://\-www.rtj.org}}},
5763    month       = sep,
5764    year        = 1999,
5765}
5766
5767@article{Robinson48,
5768    keywords    = {recursion, Ackermann function},
5769    contributer = {pabuhr@plg},
5770    author      = {Raphael Mitchel Robinson},
5771    title       = {Recursion and Double Recursion},
5772    publisher   = {American Mathematical Society},
5773    journal     = {Bulletin of the American Mathematical Society},
5774    volume      = 54,
5775    pages       = {987-993},
5776    year        = 1948,
5777}
5778
5779@article{Dijkstra:red,
5780    keywords    = {ada},
5781    contributer = {gjditchfield@plg},
5782    author      = {Edsger W. Dijkstra},
5783    title       = {On the RED Language submitted to the DoD},
5784    journal     = sigplan,
5785    year        = 1978,
5786    month       = oct,
5787    volume      = 13,
5788    number      = 10,
5789    pages       = {27-32},
5790}
5791
5792@article{RemoteRendezvous,
5793    keywords    = {rendezvous, concurrency},
5794    contributer = {pabuhr@plg},
5795    author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
5796    title       = {Remote Rendezvous},
5797    journal     = spe,
5798    month       = oct,
5799    year        = 1987,
5800    volume      = 17,
5801    number      = 10,
5802    pages       = {741-755}
5803}
5804
5805@article{Euclid,
5806    keywords    = {Euclid},
5807    contributer = {pabuhr@plg},
5808    author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
5809    title       = {Report on the Programming Language Euclid},
5810    journal     = sigplan,
5811    volume      = 12,
5812    number      = 2,
5813    month       = feb,
5814    year        = 1977,
5815    pages       = {1-79}
5816}
5817
5818@techreport{LOGLAN88,
5819    keywords    = {LOGLAN},
5820    contributer = {pabuhr@plg},
5821    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},
5822    title       = {Report on the Programming Language LOGLAN'88},
5823    institution = {Institute of Informatics, University of Warsaw},
5824    address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
5825    number      = {},
5826    month       = dec,
5827    year        = 1988,
5828}
5829
5830@mastersthesis{Schluntz17,
5831    author      = {Robert Schluntz},
5832    title       = {Resource Management and Tuples in C$\mathbf{\forall}$},
5833    school      = {School of Computer Science, University of Waterloo},
5834    year        = 2017,
5835    address     = {Waterloo, Ontario, Canada, N2L 3G1},
5836    note        = {[[unpublished]]}
5837}
5838
5839@article{FH91,
5840    keywords    = {lcc},
5841    contributer = {gjditchfield@plg},
5842    author      = {Christopher W. Fraser and David R. Hanson},
5843    title       = {A Retargetable Compiler for {ANSI} {C}},
5844    journal     = sigplan,
5845    year        = 1991,
5846    month       = oct, volume = 26, number = 10, pages = {29-43},
5847    abstract    = {
5848        {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
5849        the VAX, Motorola 68020, SPARC, and MIPS are in production use at
5850        Princeton University and at AT\&T Bell Laboratories.  With a few
5851        exceptions, little about {\tt lcc} is unusual---it integrates
5852        several well engineered, existing techniques---but it is smaller
5853        and faster than most other C compilers, and it generates code of
5854        comparable quality.  {\tt lcc}'s target-independent front end
5855        performs a few simple, but effective, optimizations that contribute
5856        to good code; examples include simulating register declarations and
5857        partitioning switch statements into dense tables.  It also
5858        implements target-independent function tracing and expression-level
5859        profiling.
5860    }
5861}
5862
5863@article{Algol68revised,
5864    keywords    = {},
5865    contributer = {gjditchfield@plg},
5866    author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
5867        C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
5868        Meertens and R. G. Fisher},
5869    title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
5870    journal     = sigplan,
5871    year        = 1977,
5872    month       = may,
5873    volume      = 12,
5874    number      = 5,
5875    pages       = {1-70}
5876}
5877
5878@article{scheme,
5879    keywords    = {},
5880    contributer = {gjditchfield@plg},
5881    author      = {Jonathan Rees and William Clinger},
5882    title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
5883    journal     = sigplan,
5884    year        = 1986,
5885    month       = dec,
5886    volume      = 21,
5887    number      = 12,
5888    pages       = {37-79},
5889}
5890
5891@article{scheme5,
5892    keywords    = {scheme},
5893    contributer = {pabuhr@plg},
5894    author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
5895                   R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
5896                   G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
5897    title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
5898    journal     = sigplan,
5899    year        = 1998,
5900    month       = sep,
5901    volume      = 33,
5902    number      = 9,
5903    pages       = {26-76},
5904}
5905
5906@manual{Rust,
5907    keywords    = {Rust programming language},
5908    contributer = {pabuhr@plg},
5909    author      = {{Rust}},
5910    title       = {The {Rust} Programming Language},
5911    organization= {The Rust Project Developers},
5912    year        = 2015,
5913    note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
5914}
5915
5916% S
5917
5918@manual{Scala,
5919    keywords    = {Scala programming language},
5920    contributer = {pabuhr@plg},
5921    author      = {{Scala}},
5922    title       = {{Scala} Language Specification, Version 2.11},
5923    organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
5924    year        = 2016,
5925    note        = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
5926}
5927
5928@inproceedings{Michael04,
5929    keywords    = {lock free, dynamic memory allocation},
5930    contributer = {pabuhr@plg},
5931    author      = {Maged M. Michael},
5932    title       = {Scalable Lock-free Dynamic Memory Allocation},
5933    booktitle   = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
5934    location    = {Washington DC, USA},
5935    publisher   = {ACM},
5936    address     = {New York, NY, USA},
5937    volume      = 39,
5938    year        = 2004,
5939    month       = jun,
5940    pages       = {35-46},
5941}
5942
5943@article{Anderson92,
5944    keywords    = {light-weight tasks},
5945    contributer = {pabuhr@plg},
5946    author      = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
5947    title       = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
5948    journal     = tocs,
5949    volume      = 10,
5950    number      = 1,
5951    month       = feb,
5952    year        = 1992,
5953    pages       = {53-79},
5954}
5955
5956@manual{SELF,
5957    keywords    = {programming language, obect-oriented, polymorphism},
5958    contributer = {pabuhr@plg},
5959    author      = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
5960                   and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},