source: doc/bibliography/pl.bib @ 65a7050

ADTaaron-thesisarm-ehcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpersistent-indexerpthread-emulationqualifiedEnum
Last change on this file since 65a7050 was 65a7050, checked in by Peter A. Buhr <pabuhr@…>, 4 years ago

add more citations

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