source: doc/bibliography/pl.bib @ 6eed619

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 6eed619 was 6eed619, checked in by Aaron Moss <a3moss@…>, 5 years ago

thesis: add reference to concurrent hash tries

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