source: doc/bibliography/pl.bib @ be03945

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

fix citation format

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