source: doc/bibliography/pl.bib @ ca0f061f

aaron-thesisarm-ehcleanup-dtorsjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpersistent-indexer
Last change on this file since ca0f061f was ca0f061f, checked in by Peter A. Buhr <pabuhr@…>, 3 years ago

second introduction update

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