source: doc/bibliography/pl.bib @ 2185df1

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

formatting

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