source: doc/bibliography/pl.bib @ 5934c5f

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

add Checked C citation to bibliography file

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