source: doc/bibliography/pl.bib @ d065ded

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

thesis: polish Ch.6 to first draft

  • Property mode set to 100644
File size: 244.7 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@misc{Dotty-github,
2368    keywords = {dotty,scala},
2369    contributer = {a3moss@uwaterloo.ca},
2370    author = {Martin Odersky},
2371    title = {Dotty},
2372    howpublished = {\href{https://github.com/lampepfl/dotty}{https://\-github.com/\-lampepfl/\-dotty}},
2373    note = {Acessed: 2019-02-22}
2374}
2375
2376@unpublished{Duff83,
2377    keywords    = {C, switch statement, control flow},
2378    contributer = {pabuhr@plg},
2379    author      = {Tom Duff},
2380    title       = {Duff's Device},
2381    month       = nov,
2382    year        = 1983,
2383    note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
2384}
2385
2386@manual{dwarf2,
2387    keywords    = {Debugging DWARF2 specification},
2388    contributer = {rkrische@plg},
2389    title       = {DWARF Debugging Information Format},
2390    organization= {Unix International Programming Languages SIG},
2391    publisher   = {Unix International},
2392    address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
2393    year        = {1993}
2394}
2395
2396@article{classicada,
2397    keywords    = {Classic Ada},
2398    contributer = {gjditchfield@plg},
2399    author      = {Cameron M. Donaldson},
2400    title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
2401    journal     = {Journal of Pascal, {Ada} \& Modula-2},
2402    year        = 1990,
2403    month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
2404    comment     = {
2405        Classes are like packages: they can contain subprograms, types,
2406        variables, generic instantiations, and exceptions.  They can also
2407        contain class methods, instance methods, and instance variables,
2408        and define creation and initialization subprograms or methods for
2409        instances.  Single inheritance provides inheritance of
2410        implementations. Dynamic binding is done with a {\em send}
2411        statement that invokes a class or instance method.  A preprocessor
2412        converts Classic Ada to normal Ada.
2413    }
2414}
2415
2416@article{Costanza03,
2417    keywords    = {dynamic call},
2418    contributer = {pabuhr@plg},
2419    author      = {Pascal Costanza},
2420    title       = {Dynamic Scoped Functions as the Essence of {AOP}},
2421    journal     = sigplan,
2422    volume      = 38,
2423    number      = 8,
2424    month       = aug,
2425    year        = 2003,
2426    pages       = {29-35},
2427}
2428
2429% E
2430
2431@inproceedings{Wegbreit71,
2432    keywords    = {polymorphism},
2433    contributer = {pabuhr@plg},
2434    author      = {B. Wegbreit},
2435    title       = {The ECL Programming System},
2436    booktitle   = {Proceedings of AFIPS 1971 FJCC},
2437    publisher   = {AFIPS Press, vol. 39},
2438    address     = {Montvale, New Jersey, U.S.A},
2439    year        = 1971,
2440    pages       = {253-262},
2441}
2442
2443@manual{JavaScript,
2444    keywords    = {JavaScript},
2445    contributer = {pabuhr@plg},
2446    title       = {ECMAScript 2015 Language Specification {JavaScript}},
2447    organization= {ECAM International},
2448    address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
2449    month       = jun,
2450    year        = 2015,
2451    note        = {6th Edition}
2452}
2453
2454@inproceedings{Peterson77,
2455    keywords    = {N-thread software-solution mutual exclusion},
2456    contributer = {pabuhr@plg},
2457    author      = {Gary L. Peterson and Michael J. Fischer},
2458    title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
2459    booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
2460    series      = {STOC '77},
2461    year        = 1977,
2462    location    = {Boulder, Colorado, USA},
2463    pages       = {91--97},
2464    numpages    = {7},
2465    publisher   = {ACM},
2466    address     = {New York, NY, USA},
2467}
2468
2469@article{Hansen81a,
2470    keywords    = {concurrency, monitor, critical region},
2471    contributer = {pabuhr@plg},
2472    author      = {Per {Brinch Hansen}},
2473    title       = {{E}dison---a Multiprocessor Language},
2474    journal     = spe,
2475    volume      = 11,
2476    number      = 4,
2477    month       = apr,
2478    year        = {1981},
2479    pages       = {325-361},
2480}
2481
2482@book{Eiffel,
2483    keywords    = {Eiffel},
2484    contributer = {pabuhr@plg},
2485    author      = {Bertrand Meyer},
2486    title       = {Eiffel: The Language},
2487    publisher   = {Prentice-Hall},
2488    address     = {Englewood Cliffs},
2489    year        = 1992,
2490    series      = {Prentice-Hall Object-Oriented Series},
2491}
2492
2493@article{WS:overload,
2494    keywords    = {compilation},
2495    contributer = {gjditchfield@plg},
2496    author      = {Peter J. L. Wallis and Bernhard W. Silverman},
2497    title       = {Efficient Implementation of the {Ada} Overloading Rules},
2498    journal     = ipl,
2499    year        = 1980,
2500    month       = apr, volume = 10, number = 3, pages = {120-123},
2501    comment     = {
2502        The ``two-pass'' algorithm.  An upward pass over a parse tree
2503        calculates the set of possible result types of operators.  The
2504        root must have exactly one type, produced in one way.  A
2505        downward pass selects the version of the operator that produces the
2506        desired result type, thus setting the result types of subtrees.
2507        See \cite{D:overload}.
2508    }
2509}
2510
2511@techreport{Habermann80,
2512    keywords    = {Ada, threads},
2513    contributer = {pabuhr@plg},
2514    author      = {A. N. Habermann and I. R. Nassi},
2515    title       = {Efficient Implementation of {Ada} Tasks},
2516    institution = {Carnegie-Mellon University},
2517    number      = {CMU-CS-80-103},
2518    year        = 1980
2519}
2520
2521@article{Emerald,
2522    keywords    = {concurrency, polymorphism},
2523    contributer = {pabuhr@plg},
2524    author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
2525    title       = {Emerald: A General-Purpose Programming Language},
2526    journal     = spe,
2527    month       = jan,
2528    year        = 1991,
2529    volume      = 21,
2530    number      = 1,
2531    pages       = {91-118}
2532}
2533
2534@InProceedings{chambers89a,
2535    keywords    = {maps, delegation},
2536    author      = "Craig Chambers and David Ungar and Elgin Lee",
2537    title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
2538                 Object-Oriented Language Based on Prototypes",
2539    crossref    = "OOPSLA89",
2540    pages       = {49-70}
2541}
2542
2543@article{oop:encapsulation,
2544    keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
2545    contributer = {gjditchfield@plg},
2546    author      = {Alan Snyder},
2547    title       = {Encapsulation and Inheritance in Object-Oriented Programming
2548        Languages},
2549    journal     = sigplan,
2550    volume      = {21},    number = {11},
2551    pages       = {38-45},
2552    month       = nov, year = 1986,
2553    comment     = {
2554        Client, child interfaces should be distinct.  Child interface
2555        shouldn't grant total access to parent.
2556
2557        Rules for redefining parent variable name in a child affect
2558        re-implementation of the parent.
2559
2560        Inheritance can be a promise to obey the semantics of the parent,
2561        or code reuse; the two may be contradictory.  Unification
2562        exposes use of inheritance: a child can not be re-implemented
2563        without breaking code that assumes that it is a subclass of the
2564        original parent.  If a class uses the names of its parents'
2565        ancestors, then inheritance is part of the parent's child
2566        interface.
2567
2568        Linearizing a multiple inheritance tree means that a class's use of
2569        calls on super need to be understood before it is used as a parent.
2570        Merging repeated ancestors exposes inheritance if an ancestor is
2571        re-implemented.  Forbidding inheritance of distinct methods with
2572        the same name exposes implementation of ancestors.  Proposed
2573        solution treats the set of ancestors as a tree.
2574    }
2575}
2576
2577@article{st:encapsulator,
2578    keywords    = {encapsulator, Smalltalk, monitor},
2579    contributer = {gjditchfield@plg},
2580    author      = {Geoffrey A. Pascoe},
2581    title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
2582    journal     = sigplan,
2583    volume      = {21},    number       = {11},
2584    pages       = {341-346},
2585    month       = nov, year = 1986,
2586    comment     = {
2587        Encapsulators are objects that surround other objects.
2588        Pre- and post-actions are performed when messages are sent to the
2589        encapsulated object.  They are created here by sending the message
2590        object: to an encapsulator class.  Examples given are monitors,
2591        atomic objects, and Model (for model-view-controller interfaces).
2592
2593        Encapsulator classes use a family of selectors that the
2594        encapsulated object will not respond to.  Messages for the
2595        encapsulated object are passed on by trapping them with the
2596        doesNotUnderstand method.  Various fiddles were needed when setting
2597        up the class and metaclass hierarchies.  A few selectors (==,
2598        class) always directly invoke primitive methods; they can't be
2599        used.
2600
2601        Can an encapsulated object be an encapsulator?  Probably, but the
2602        middle object's selectors are inaccessible.
2603    }
2604}
2605
2606@manual{EPT,
2607    keywords    = {concurrency, light-weight threads},
2608    contributer = {pabuhr@plg},
2609    key         = {Encore},
2610    title       = {Encore Parallel Thread Manual, 724-06210},
2611    organization= {Encore Computer Corporation},
2612    month       = may,
2613    year        = 1988,
2614}
2615
2616@manual{Erlang,
2617    keywords    = {Erlang},
2618    contributer = {pabuhr@plg},
2619    key         = {Erlang},
2620    title       = {Erlang/OTP System Documentation 8.1},
2621    organization= {Erlang AB},
2622    month       = sep,
2623    year        = 2016,
2624    note        = {\href{http://erlang.org/doc/pdf/otp-system-documentation.pdf}{http://\-erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}},
2625}
2626
2627@inproceedings{MH88,
2628    keywords    = {modules, general sums, general products},
2629    contributer = {gjditchfield@plg},
2630    author      = {John C. Mitchell and Robert Harper},
2631    title       = {The Essence of {ML}},
2632    booktitle   = popl,
2633    year        = 1988,
2634    pages       = {28-46}
2635}
2636
2637@book{LeVerrand,
2638    keywords    = {},
2639    author      = {D. Le Verrand},
2640    title       = {Evaluating {Ada}},
2641    publisher   = {North Oxford Academic},
2642    year        = 1985
2643}
2644
2645@inproceedings{Bloom79,
2646    keywords    = {concurrency},
2647    contributer = {pabuhr@plg},
2648    author      = {Toby Bloom},
2649    title       = {Evaluating Synchronization Mechanisms},
2650    booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
2651    organization= {ACM SIGOPS},
2652    address     = {Pacific Grove, California, U.S.A},
2653    month       = dec,
2654    year        = 1979,
2655    pages       = {24-32}
2656}
2657
2658@inproceedings{XaaS,
2659    keywords    = {Everything as a Service, Anything as a Service, Cloud computing, SOA},
2660    contributer = {pabuhr@plg},
2661    author      = {Duan, Yucong and Fu, Guohua and Zhou, Nianjun and Sun, Xiaobing and Narendra, Nanjangud C. and Hu, Bo},
2662    title       = {Everything As a Service (XaaS) on the Cloud: Origins, Current and Future Trends},
2663    booktitle   = {Proceedings of the 2015 IEEE 8th International Conference on Cloud Computing},
2664    series      = {CLOUD'15},
2665    year        = {2015},
2666    pages       = {621--628},
2667    publisher   = {IEEE Computer Society},
2668    address     = {Washington, DC, USA},
2669}
2670
2671@article{Buhr06a,
2672    keywords    = {concurrency, C++, uC++},
2673    contributer = {pabuhr@plg},
2674    author      = {Peter A. Buhr and Richard C. Bilson},
2675    title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
2676                   High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2677    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2678    month       = feb,
2679    year        = 2006,
2680    volume      = 31,
2681    number      = 2,
2682    pages       = {36-40},
2683}
2684
2685@article{ExceptionalC,
2686    keywords    = {exception handling, asynchronous events},
2687    contributer = {wyrmok@plg},
2688    author      = {N. H. Gehani},
2689    title       = {Exceptional {C} or {C} with Exceptions},
2690    journal     = spe,
2691    year        = 1992,
2692    month       = oct,
2693    volume      = 22,
2694    number      = 10,
2695    pages       = {827-848},
2696    comment     = {
2697        It is the most extensive exceptional handling mechanism thus
2698        far. Though it doesn't have Mesa resumption, it has
2699        asynchronous signal which is more general and abstract than
2700        the unix signal mechanism.  It has an Eiffel like retry
2701        mechanism. Consequently, the scope of guarded region is not
2702        immediately terminated when an exception is raised. In fact,
2703        an exception handler creates a scope under its guarded
2704        region.
2705        }
2706}
2707
2708@incollection{Buhr02,
2709    keywords    = {exception handling},
2710    contributer = {pabuhr@plg},
2711    author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
2712    title       = {Exception Handling},
2713    editor      = {Marvin V. Zelkowitz},
2714    booktitle   = {Advances in COMPUTERS},
2715    publisher   = {Academic Press},
2716    address     = {London},
2717    volume      = 56,
2718    year        = 2002,
2719    pages       = {245-303},
2720}
2721
2722@article{Cargill94,
2723    keywords    = {exception handling},
2724    contributer = {pabuhr@plg},
2725    author      = {Tom Cargill},
2726    title       = {Exception Handling: a False Sense of Security},
2727    journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
2728    year        = 1994,
2729    month       = nov,
2730    volume      = 6,
2731    number      = 9,
2732    note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
2733}
2734
2735@article{Knudsen84,
2736    keywords    = {static exception handling, BETA, sequel},
2737    contributer = {wyrmok@plg},
2738    author      = {J{\o}rgen Lindskov Knudsen},
2739    title       = {Exception Handling --- A Static Approach},
2740    journal     = spe,
2741    year        = 1984,
2742    month       = may,
2743    volume      = 14,
2744    number      = 5,
2745    pages       = {429-449},
2746}
2747
2748@article{Drew94,
2749    keywords    = {exceptions, exception handling},
2750    contributer = {wyrmok@plg},
2751    author      = {Steven J. Drew and K. John Gough},
2752    title       = {Exception Handling: Expecting the Unexpected},
2753    journal     = {Computer Languages},
2754    year        = 1994,
2755    month       = may,
2756    volume      = 20,
2757    number      = 2,
2758    comment     = {
2759        A recent and good survey on various exception handling mechanisms found
2760        in imperative programming languages. It classifies various mechanism in
2761        terms of flow control and scopes. Asynchronous exceptions and signals
2762        are also covered as Exceptional C is in the survey.
2763        }
2764}
2765
2766@article{Koenig90,
2767    keywords    = {exception handling},
2768    contributer = {pabuhr@plg},
2769    author      = {Andrew Koenig and Bjarne Stroustrup},
2770    title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2771    journal     = joop,
2772    month       = {July/August},
2773    year        = 1990,
2774    volume      = 3,
2775    number      = 2,
2776    pages       = {16-33},
2777}
2778
2779@article{Lee83,
2780    keywords    = {exception handling, C},
2781    contributer = {pabuhr@plg},
2782    author      = {P. A. Lee},
2783    title       = {Exception Handling in {C} Programs},
2784    journal     = spe,
2785    volume      = 13,
2786    number      = 5,
2787    month       = may,
2788    year        = 1983,
2789    pages       = {389-405},
2790}
2791
2792@article{Liskov79,
2793    keywords    = {exception handling},
2794    contributer = {pabuhr@plg},
2795    author      = {Barbara H. Liskov and Alan Snyder},
2796    title       = {Exception Handling in {CLU}},
2797    journal     = ieeese,
2798    month       = nov,
2799    year        = 1979,
2800    volume      = {SE-5},
2801    number      = 6,
2802    pages       = {546-558},
2803}
2804
2805@article{Szalas85,
2806    keywords    = {concurrency, C++},
2807    contributer = {pabuhr@plg},
2808    author      = {Andrzej Szalas and Danuta Szczepanska},
2809    title       = {Exception Handling in Parallel Computations},
2810    journal     = sigplan,
2811    publisher   = {ACM},
2812    address     = {New York, NY, USA},
2813    volume      = 20,
2814    number      = 10,
2815    month       = oct,
2816    year        = 1985,
2817    pages       = {95-104},
2818}
2819
2820@article{MacLaren77,
2821    keywords    = {exception handling, PL/I},
2822    contributer = {pabuhr@plg},
2823    author      = {M. Donald MacLaren},
2824    title       = {Exception Handling in {PL/I}},
2825    journal     = sigplan,
2826    volume      = 12,
2827    number      = 3,
2828    month       = mar,
2829    year        = 1977,
2830    pages       = {101-104},
2831    note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
2832                   March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
2833}
2834
2835@article{Goodenough75,
2836    keywords    = {exception handling},
2837    contributer = {pabuhr@plg},
2838    author      = {J. B. Goodenough},
2839    title       = {Exception Handling: Issues and a Proposed Notation},
2840    journal     = cacm,
2841    month       = dec,
2842    year        = 1975,
2843    volume      = 18,
2844    number      = 12,
2845    pages       = {683-696},
2846}
2847
2848@article{Lampson80,
2849    keywords    = {monitors},
2850    contributer = {pabuhr@plg},
2851    author      = {B. W. Lampson and D. D. Redell},
2852    title       = {Experience with Processes and Monitors in Mesa},
2853    journal     = cacm,
2854    volume      = 23,
2855    number      = 2,
2856    month       = feb,
2857    year        = 1980,
2858    pages       = {105-117},
2859}
2860
2861@inproceedings{Shopiro87,
2862    keywords    = {concurrency},
2863    contributer = {pabuhr@plg},
2864    author      = {Jonathan E. Shopiro},
2865    title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
2866    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
2867    organization= {USENIX Association},
2868    address     = {Santa Fe, New Mexico, U.S.A},
2869    month       = nov,
2870    year        = 1987,
2871    pages       = {77-94}
2872}
2873
2874@article{Modula-2+,
2875    keywords    = {Modula-2, exceptions, garbage collection, concurrency},
2876    contributer = {gjditchfield@plg},
2877    author      = {Paul Rovner},
2878    title       = {Extending Modula-2 to Build Large, Integrated Systems},
2879    journal     = {IEEE Software},
2880    month       = nov,
2881    year        = 1986,
2882    volume      = 3,
2883    number      = 6,
2884    pages       = {46-57},
2885    comment     = {
2886        Exceptions can have a parameter.  Procedures can declare the
2887        exceptions they can propagate; others are converted to {\tt
2888        SYSTEM.Fail}.  If they don't, all exceptions propagate.
2889        Block cleanup statements execute no matter how control leaves the
2890        block.
2891
2892        {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
2893        assigned any {\tt REF t}.  Open array types can be used in
2894        parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
2895        dynamically determined size.
2896
2897        The {\tt THREAD} module provides lightweight processes, semaphores,
2898        and conditions.  A statement {\tt LOCK {\em semaphore} DO
2899        {\em statements} END} is built in.
2900
2901        {\tt SAFE} modules do run-time checks, and only import {\tt
2902        SAFE} modules.  One implementation module can implement several
2903        definition modules.  Opaque type implementations can be
2904        repeated in modules that import its definition, so implementation
2905        modules can collaborate.  The linker checks that all
2906        implementations are the same.
2907    }
2908}
2909
2910@misc{GCCExtensions,
2911    contributer = {a3moss@uwaterloo.ca},
2912    key         = {C Extensions},
2913    author      = {{C Extensions}},
2914    title       = {Extensions to the {C} Language Family},
2915    year        = 2014,
2916    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}},
2917    optnote     = {Accessed: 2017-04-02},
2918}
2919
2920@inproceedings{BNRPascal,
2921    keywords    = {concurrency, rendezvous},
2922    contributer = {pabuhr@plg},
2923    author      = {R. Kamel and N. Gammage},
2924    title       = {Experience with Rendezvous},
2925    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
2926    month       = oct,
2927    year        = 1988,
2928    pages       = {143-149}
2929}
2930
2931@inproceedings{Patwary10,
2932    keywords    = {union-find},
2933    contributer = {a3moss@uwaterloo.ca},
2934    author      = {Patwary, Md. Mostofa Ali and Blair, Jean and Manne, Fredrik},
2935    editor      = {Festa, Paola},
2936    title       = {Experiments on Union-Find Algorithms for the Disjoint-Set Data Structure},
2937    booktitle   = {Experimental Algorithms},
2938    year        = 2010,
2939    publisher   = {Springer Berlin Heidelberg},
2940    address     = {Berlin, Heidelberg},
2941    pages       = {411--423},
2942    isbn        = {978-3-642-13193-6}
2943}
2944
2945% F
2946
2947@inproceedings{Knudsen01,
2948    keywords    = {Beta, exception handling},
2949    contributer = {pabuhr@plg},
2950    author      = {J{\o}rgen Lindskov Knudsen},
2951    title       = {Fault Tolerance and Exception Handling in {BETA}},
2952    booktitle   = {Exception Handling},
2953    publisher   = {Springer},
2954    volume      = 2022,
2955    series      = {Lecture Notes in Computer Science},
2956    year        = 2001,
2957    pages       = {1-17}
2958}
2959
2960@article{Lamport87,
2961    keywords    = {software solutions, mutual exclusion, fast},
2962    contributer = {pabuhr@plg},
2963    author      = {Leslie Lamport},
2964    title       = {A Fast Mutual Exclusion Algorithm},
2965    journal     = tocs,
2966    volume      = 5,
2967    number      = 1,
2968    month       = jan,
2969    year        = {1987},
2970    pages       = {1-11},
2971    publisher   = {ACM},
2972    address     = {New York, NY, USA},
2973}
2974
2975@article{Hesselink17,
2976    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
2977    title       = {Fast mutual exclusion by the {T}riangle algorithm},
2978    author      = {Wim H. Hesselink and Peter A. Buhr and David Dice},
2979    journal     = ccpe,
2980    volume      = 30,
2981    number      = 4,
2982    year        = 2018,
2983    month       = feb,
2984    publisher   = {John Wiley \& Sons},
2985    note        = {\href{https://doi.org/10.1002/cpe.4183}{https://\-doi.org/\-10.1002/\-cpe.4183}}
2986}
2987
2988@article{Yang95,
2989    keywords    = {software solutions, N-thread, mutual exclusions},
2990    contributer = {pabuhr@plg},
2991    author      = {Jae-Heon Yang and James H. Anderson},
2992    title       = {A Fast, Scalable Mutual Exclusion Algorithm},
2993    journal     = {Distributed Computing},
2994    publisher   = {Springer-Verlag},
2995    volume      = {9},
2996    number      = {1},
2997    year        = {1995},
2998    pages       = {51-60},
2999}
3000
3001@inproceedings{F-bound,
3002    keywords    = {},
3003    contributer = {gjditchfield@plg},
3004    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
3005    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
3006    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
3007    year        = 1989,
3008    month       = sep,
3009    pages       = {273-280}
3010}
3011
3012@mastersthesis{Wasik08,
3013    author      = {Ayelet Wasik},
3014    title       = {Features of a Multi-Threaded Memory Allocator},
3015    school      = {University of Waterloo},
3016    year        = 2008,
3017    month       = jan,
3018    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3019    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
3020}
3021
3022@article{Holzmann94,
3023    keywords    = {semaphore, flags},
3024    contributer = {pabuhr@plg},
3025    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
3026    title       = {The First Data Networks},
3027    journal     = {Scientific American},
3028    month       = jan,
3029    year        = 1994,
3030    volume      = 12,
3031    number      = 1,
3032    pages       = {124-129},
3033}
3034
3035@article{Bohm66,
3036    keywords    = {goto, structured programming},
3037    contributer = {pabuhr@plg},
3038    author      = {C. B\"{o}hm and G. Jacopini},
3039    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
3040    journal     = cacm,
3041    month       = may,
3042    year        = 1966,
3043    volume      = 9,
3044    number      = 5,
3045    pages       = {366-371},
3046}
3047
3048@manual{Fortran95,
3049    keywords    = {Fortran 95},
3050    contributer = {pabuhr@plg},
3051    key         = {Fortran95},
3052    title       = {Fortran 95 Standard, ISO/IEC 1539},
3053    organization= {Unicomp, Inc.},
3054    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
3055    month       = jan,
3056    year        = 1997,
3057}
3058
3059@manual{Fortran08,
3060    keywords    = {ISO/IEC Fortran 08},
3061    contributer = {pabuhr@plg},
3062    author      = {Fortran08},
3063    title       = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2010},
3064    edition     = {3rd},
3065    publisher   = {International Standard Organization},
3066    address     = {\href{https://www.iso.org/standard/50459.html}{https://\-www.iso.org/\-standard/\-50459.html}},
3067    year        = 2010,
3068}
3069
3070@book{Andrews00:book,
3071    keywords    = {concurrency},
3072    contributer = {pabuhr@plg},
3073    author      = {Gregory R. Andrews},
3074    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
3075    publisher   = {Addison--Wesley},
3076    year        = 2000,
3077}
3078
3079@article{Agha89,
3080    keywords    = {actors, concurrency},
3081    contributer = {pabuhr@plg},
3082    author      = {Gul A. Agha},
3083    title       = {Foundational Issues in Concurrent Computing},
3084    journal     = sigplan,
3085    month       = apr,
3086    year        = 1989,
3087    volume      = 24,
3088    number      = 4,
3089    pages       = {60-65},
3090    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
3091                   Sept. 26--27, 1988, San Diego, California, U.S.A},
3092}
3093
3094@article{ool,
3095    keywords    = {},
3096    contributer = {gjditchfield@plg},
3097    author      = {Douglas T. Ross},
3098    title       = {Toward Foundations for the Understanding of Type},
3099    journal     = sigplan,
3100    year        = 1976,
3101    volume      = 11,
3102    pages       = {63-65},
3103    note        = {Conference on Data: Abstraction, Definition and Structure},
3104    summary     = {
3105        Possibly the first use (without definition, alas) of the phrase
3106        "object oriented language".  Metaphysical to the point of incoherence.
3107    }
3108}
3109
3110@article{frames,
3111    keywords    = {frames},
3112    contributer = {gjditchfield@plg},
3113    author      = {Paul G. Basset},
3114    title       = {Frame-Based Software Engineering},
3115    journal     = {IEEE Software},
3116    month       = jul, year = 1987,
3117    volume      = 4, number = 4, pages = {9-16}
3118}
3119
3120@misc{Sutter05c,
3121    contributer = {pabuhr@plg},
3122    title       = {The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software},
3123    author      = {Herb Sutter},
3124    howpublished= {\url{http://www.gotw.ca/publications/concurrency-ddj.htm}},
3125    year        = {2005},
3126    note        = {originally Dr. Dobb's Journal 30(3)},
3127}
3128
3129@article{Sutter05,
3130    keywords    = {concurrency, C++},
3131    contributer = {pabuhr@plg},
3132    author      = {Herb Sutter},
3133    title       = {A Fundamental Turn Toward Concurrency in Software},
3134    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
3135    month       = mar,
3136    year        = 2005,
3137    volume      = 30,
3138    number      = 3,
3139    pages       = {16-22},
3140}
3141
3142@inproceedings{Dony01,
3143    keywords    = {Smalltalk, exception handling},
3144    contributer = {pabuhr@plg},
3145    author      = {Chistophe Dony},
3146    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
3147    booktitle   = {Exception Handling},
3148    publisher   = {Springer},
3149    volume      = 2022,
3150    series      = {Lecture Notes in Computer Science},
3151    year        = 2001,
3152    pages       = {18-38}
3153}
3154
3155@misc{FW,
3156    key         = {FW},
3157    contributer = {gjditchfield@plg},
3158    title       = {Funk \& Wagnalls Standard Desk Dictionary},
3159    year        = 1980
3160}
3161
3162@book{Knuth73V1,
3163    contributer = {pabuhr@plg},
3164    author      = {Donald E. Knuth},
3165    title       = {Fundamental Algorithms},
3166    series      = {The Art of Computer Programming},
3167    publisher   = {Addison-Wesley},
3168    address     = {Boston},
3169    year        = 1973,
3170    volume      = 1,
3171    edition     = {2nd},
3172}
3173
3174@inproceedings{Strachey,
3175    keywords    = {polymorphism},
3176    contributer = {gjditchfield@plg},
3177    author      = {C. Strachey},
3178    title       = {Fundamental Concepts in Programming Languages},
3179    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
3180    year        = 1967,
3181    month       = aug,
3182    address     = {Copenhagen},
3183    comment     = {
3184        Defines ad-hoc and parametric polymorphism.
3185    }
3186}
3187
3188@article{Eisenberg72,
3189    keywords    = {concurrency, N-Process solution, O(N)},
3190    contributer = {pabuhr@plg},
3191    author      = {Murray A. Eisenberg and Michael R. McGuire},
3192    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
3193    journal     = cacm,
3194    month       = nov,
3195    year        = 1972,
3196    volume      = 15,
3197    number      = 11,
3198    pages       = {999},
3199}
3200
3201% G
3202
3203@article{Boehm88,
3204    keywords    = {conservative garbage collection, C},
3205    contributer = {gjditchfield@plg},
3206    author      = {Hans-Juergen Boehm and Mark Weiser},
3207    title       = {Garbage Collection in an Uncooperative Environment},
3208    journal     = spe,
3209    month       = sep,
3210    year        = 1988,
3211    volume      = 18,
3212    number      = 9,
3213    pages       = {807-820}
3214}
3215
3216@manual{gcc,
3217    keywords    = {},
3218    contributer = {gjditchfield@plg},
3219    title       = {GCC},
3220    author      = {Richard M. Stallman},
3221    organization= {Free Software Foundation},
3222    address     = {Cambridge}
3223}
3224
3225@article{doUpon,
3226    keywords    = {formal verification, axiomatic semantics, control structures},
3227    contributer = {gjditchfield@plg},
3228    author      = {Ed Anson},
3229    title       = {A Generalized Iterative Construct and Its Semantics},
3230    journal     = toplas,
3231    volume      = {9},    number = {4},
3232    pages       = {567-581},
3233    month       = oct, year = 1987,
3234    comment     = {
3235        \begin{verbatim}
3236            do
3237                   P1 -> L1
3238               [] P2 -> L2
3239            ...
3240               [] Pm -> Lm
3241            upon
3242                   Q1 -> M1
3243               [] Q2 -> M2
3244            ...
3245               [] qn -> mn
3246            od
3247        \end{verbatim}
3248
3249        If there is an i such that Qi is true, execute Mi and terminate.
3250        Otherwise, if there is an i such that Pi is true, execute Li and
3251        repeat the loop.  Otherwise, fail.
3252    }
3253}
3254
3255@unpublished{Bilson,
3256    keywords    = {generic programming, generics, polymorphism},
3257    contributor = {a3moss@plg},
3258    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3259    title       = {Generic Programming with Inferred Models},
3260}
3261
3262@article{Haskell,
3263    keywords    = {lazy evaluation, type class},
3264    contributer = {pabuhr},
3265    author      = {Paul Hudak and Joseph H. Fasel},
3266    title       = {A Gentle Introduction to Haskell},
3267    journal     = sigplan,
3268    volume      = 27,
3269    number      = 5,
3270    month       = may,
3271    year        = 1992,
3272    pages       = {T1-53},
3273}
3274
3275@manual{GMP,
3276    keywords    = {GMP arbitrary-precision library},
3277    contributer = {pabuhr@plg},
3278    key         = {GMP},
3279    title       = {{GNU} Multiple Precision Arithmetic Library},
3280    address     = {GNU},
3281    year        = 2016,
3282    note        = {\href{https://gmplib.org}{https://\-gmplib.org}},
3283}
3284
3285@manual{Go,
3286    keywords    = {Go programming language},
3287    contributer = {pabuhr@plg},
3288    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
3289    title       = {{Go} Programming Language},
3290    organization= {Google},
3291    year        = 2009,
3292    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3293}
3294
3295@article{Dijkstra68a,
3296    keywords    = {goto},
3297    contributer = {pabuhr@plg},
3298    author      = {Edsger W. Dijkstra},
3299    title       = {Go To Statement Considered Harmful},
3300    journal     = cacm,
3301    month       = mar,
3302    year        = 1968,
3303    volume      = 11,
3304    number      = 3,
3305    pages       = {147-148},
3306    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3307}
3308
3309@misc{GObject,
3310    keywords    = {GObject},
3311    contributor = {a3moss@uwaterloo.ca},
3312    key         = {GObject},
3313    organization= {The {GNOME} Project},
3314    title       = {{GO}bject Reference Manual},
3315    year        = 2014,
3316    howpublished= {https://developer.gnome.org/gobject/stable/},
3317    optnote     = {Accessed: 2017-04},
3318}
3319
3320@article{Choi91,
3321    keywords    = {contra-variance, functions},
3322    contributer = {pabuhr@plg},
3323    author      = {Injun Choi and Michael V. Mannino},
3324    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3325    journal     = {OOPS Messenger},
3326    volume      = 2,
3327    number      = 1,
3328    month       = jan,
3329    year        = 1991,
3330    pages       = {38-54},
3331}
3332
3333@misc{GNU-C,
3334    keywords    = {C, ANSI C},
3335    contributer = {pabuhr@plg},
3336    author      = {Richard Stallman},
3337    title       = {The Free Software Foundation's Gnu {C} Compiler},
3338    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3339    year        = 1989,
3340}
3341
3342@article{Dijkstra:green,
3343    keywords    = {ada},
3344    contributer = {gjditchfield@plg},
3345    author      = {Edsger W. Dijkstra},
3346    title       = {On the GREEN Language submitted to the DoD},
3347    journal     = sigplan,
3348    year        = 1978,
3349    month       = oct,
3350    volume      = 13,
3351    number      = 10,
3352    pages       = {16-21}
3353}
3354
3355@inproceedings{Miller02,
3356    keywords    = {exception handling},
3357    contributer = {pabuhr@plg},
3358    author      = {Robert Miller and Anand Tripathi},
3359    title       = {The Guardian Model for Exception Handling in Distributed Systems},
3360    booktitle   = {21st Symposium on Reliable Distributed Systems},
3361    organization= {IEEE},
3362    address     = {Suita, Japan},
3363    year        = 2002,
3364    month       = oct,
3365    pages       = {304-313}
3366}
3367
3368@phdthesis{Chen09,
3369    author      = {Jun Chen},
3370    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
3371    school      = {University of Waterloo},
3372    year        = 2009,
3373    month       = sep,
3374    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3375    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3376}
3377
3378@misc{GNU-C++,
3379    keywords    = {C++, GNU C},
3380    contributer = {pabuhr@plg},
3381    author      = {Michael D. Tiemann},
3382    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3383    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3384    month       = mar,
3385    year        = 1990,
3386}
3387
3388% H
3389
3390@manual{Haskell10,
3391    keywords    = {Haskell},
3392    contributer = {pabuhr@plg},
3393    author      = {Haskell},
3394    title       = {Haskell 2010 Language Report},
3395    edition     = {{S}imon {M}arlow},
3396    year        = 2010,
3397    note        = {\href{https://haskell.org/definition/haskell2010.pdf}{https://\-haskell.org/\-definition/\-haskell2010.pdf}},
3398}
3399
3400@article{Michael04a,
3401    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3402    author      = {Maged M. Michael},
3403    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3404    journal     = ieeepds,
3405    volume      = 15,
3406    number      = 6,
3407    month       = jun,
3408    year        = 2004,
3409    pages       = {491-504},
3410    publisher   = {IEEE Press},
3411    address     = {Piscataway, NJ, USA},
3412}
3413
3414@techreport{Hermes90,
3415    keywords    = {processes, distributed computing},
3416    contributer = {pabuhr@plg},
3417    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3418    title       = {Hermes: A Language for Distributed Computing},
3419    institution = {IBM T. J. Watson Research Center},
3420    address     = {Yorktown Heights, New York, U.S.A., 10598},
3421    month       = oct,
3422    year        = 1990,
3423}
3424
3425@book{Hermes91,
3426    keywords    = {processes, distributed computing},
3427    contributer = {pabuhr@plg},
3428    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3429    title       = {Hermes: A Language for Distributed Computing},
3430    publisher   = {Prentice-Hall},
3431    address     = {Englewood Cliffs},
3432    series      = {Innovative Technology},
3433    year        = 1991,
3434}
3435
3436@article{katzenelson83b,
3437    contributer = {gjditchfield@plg},
3438    author      = "Jacob Katzenelsen",
3439    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3440    journal     = spe,
3441    year        = 1983,
3442    volume      = 13,
3443    number      = 7,
3444    pages       = {577-596},
3445    month       = jul
3446}
3447
3448@techreport{Hoare73,
3449    keywords    = {},
3450    contributer = {gjditchfield@plg},
3451    author      = {C. A. R. Hoare},
3452    title       = {Hints on Programming Language Design},
3453    institution = {Stanford University Computer Science Department},
3454    year        = 1973,
3455    month       = dec,
3456    number      = {CS-73-403},
3457    note        = {Reprinted in \cite{pldesign}.}
3458}
3459
3460@article{Dijkstra71,
3461    keywords    = {monitor, secretary},
3462    contributer = {pabuhr@plg},
3463    author      = {E. W. Dijkstra},
3464    title       = {Hierarchical Ordering of Sequential Processes},
3465    journal     = acta,
3466    volume      = 1,
3467    pages       = {115-138},
3468    year        = 1971,
3469}
3470
3471@article{Hesselink17b,
3472    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
3473    title       = {High-Contention Mutual Exclusion by Elevator Algorithms},
3474    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3475    journal     = ccpe,
3476    volume      = 30,
3477    number      = 18,
3478    year        = 2018,
3479    month       = sep,
3480    publisher   = {John Wiley \& Sons},
3481    note        = {\href{https://doi.org/10.1002/cpe.4475}{https://\-doi.org/\-10.1002/\-cpe.4475}},
3482}
3483
3484@article{Buhr15a,
3485    keywords    = {software solution, mutual exclusion, performance experiment},
3486    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3487    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3488    journal     = ccpe,
3489    volume      = 27,
3490    number      = 3,
3491    pages       = {651-701},
3492    month       = mar,
3493    year        = 2015,
3494}
3495
3496@article{Ackermann28,
3497    keywords    = {recursion, Ackermann function},
3498    contributer = {pabuhr@plg},
3499    author      = {Wilhelm Ackermann},
3500    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
3501    publisher   = {Springer},
3502    journal     = mathann,
3503    number      = 1,
3504    volume      = 99,
3505    pages       = {118-133},
3506    month       = dec,
3507    year        = 1928,
3508}
3509
3510@inproceedings{typeclass,
3511    keywords    = {Hindley/Miller type systems, Haskell},
3512    contributer = {gjditchfield@plg},
3513    author      = {Philip Wadler and Stephen Blott},
3514    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3515    booktitle   = popl,
3516    year        = 1989,
3517    pages       = {60-76},
3518    organization= {Association for Computing Machinery}
3519}
3520
3521% I
3522
3523@book{IBM370,
3524    keywords    = {370, IBM},
3525    contributer = {pabuhr@plg},
3526    key         = {IBM370},
3527    title       = {{IBM} System/370 Principles of Operation},
3528    publisher   = {IBM},
3529    number      = {GA22-7000-8},
3530    month       = oct,
3531    year        = 1981,
3532    edition     = {9th}
3533}
3534
3535@book{Icon,
3536    keywords    = {Icon},
3537    contributer = {pabuhr@plg},
3538    author      = {Ralph E. Griswold and Madge T. Griswold},
3539    title       = {The Icon Programming Language},
3540    publisher   = {Prentice-Hall},
3541    address     = {Englewood Cliffs},
3542    year        = 1983,
3543}
3544
3545@inproceedings{Valois94,
3546    keywords    = {lock free, queue},
3547    contributer = {pabuhr@plg},
3548    author      = {John D. Valois},
3549    title       = {Implementing Lock-Free Queues},
3550    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
3551    address     = {Las Vegas, Nevada, U.S.A.},
3552    year        = {1994},
3553    pages       = {64-69},
3554}
3555
3556@article{Hehner81,
3557    keywords    = {concurrency, critical section, bakery algorithm},
3558    contributer = {pabuhr@plg},
3559    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
3560    title       = {An Implementation of {P} and {V}},
3561    journal     = ipl,
3562    year        = 1981,
3563    month       = aug,
3564    volume      = 12,
3565    number      = 4,
3566    pages       = {196-198},
3567}
3568
3569@incollection{Steenkiste91,
3570    keywords    = {lisp},
3571    contributer = {gjditchfield@plg},
3572    author      = {Peter A. Steenkiste},
3573    title       = {The Implementation of Tags and Run-Time Checking},
3574    booktitle   = {Topics in Advanced Language Implementation},
3575    pages       = {3-24},
3576    year        = 1991,
3577    editor      = {Peter Lee},
3578    chapter     = {1},
3579    publisher   = {The MIT Press}
3580}
3581
3582@techreport{Roberts89,
3583    keywords    = {},
3584    contributer = {pabuhr@plg},
3585    author      = {Eric S. Roberts},
3586    title       = {Implementing Exceptions in {C}},
3587    institution = {Digital Systems Research Center},
3588    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3589    number      = {40},
3590    month       = mar,
3591    year        = 1989,
3592}
3593
3594@mastersthesis{Bilson03,
3595    keywords    = {Cforall, parametric polymorphism, overloading},
3596    contributer = {pabuhr@plg},
3597    author      = {Richard C. Bilson},
3598    title       = {Implementing Overloading and Polymorphism in \textsf{C}$\mathbf{\forall}$},
3599    school      = {School of Computer Science, University of Waterloo},
3600    year        = 2003,
3601    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3602    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3603}
3604
3605@article{Buhr05b,
3606    keywords    = {monitor, automatic signal, implicit signal},
3607    contributer = {pabuhr@plg},
3608    author      = {Peter A. Buhr and Ashif S. Harji},
3609    title       = {Implicit-signal monitors},
3610    journal     = toplas,
3611    volume      = 27,
3612    number      = 6,
3613    month       = nov,
3614    year        = 2005,
3615    issn        = {0164-0925},
3616    pages       = {1270--1343},
3617    publisher   = {ACM Press},
3618    address     = {New York, NY, USA},
3619}
3620
3621@article{Galler64,
3622    keywords    = {union-find, original},
3623    contributer = {a3moss@uwaterloo.ca},
3624    title       = {An improved equivalence algorithm},
3625    author      = {Galler, Bernard A and Fisher, Michael J},
3626    journal     = {Communications of the ACM},
3627    volume      = {7},
3628    number      = {5},
3629    pages       = {301--303},
3630    year        = {1964},
3631    publisher   = {ACM}
3632}
3633
3634@article{Baker77,
3635    author      = {Henry C. Baker, Jr. and Carl Hewitt},
3636    title       = {The Incremental Garbage Collection of Processes},
3637    journal     = {SIGART Bulletin},
3638    publisher   = {ACM},
3639    address     = {New York, NY, USA},
3640    month       = aug,
3641    year        = 1977,
3642    pages       = {55-59},
3643    issn        = {0163-5719},
3644}
3645
3646@book{Algol68,
3647    keywords    = {Algol68},
3648    contributer = {pabuhr@plg},
3649    author      = {C. H. Lindsey and S. G. van der Meulen},
3650    title       = {Informal Introduction to ALGOL 68},
3651    publisher   = {North-Holland},
3652    address     = {London},
3653    year        = 1977,
3654}
3655
3656@inproceedings{Cook90,
3657    keywords    = {f-bounded polymorhpism, lambda calculus},
3658    contributer = {gjditchfield@plg},
3659    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
3660    title       = {Inheritance is Not Subtyping},
3661    booktitle   = popl,
3662    year        = 1990,
3663    pages       = {125-135},
3664    organization= {Association for Computing Machinery},
3665    abstract    = {
3666        In typed object-oriented languages the subtype relation is
3667        typically based on the inheritance hierarchy.  This approach,
3668        however, leads either to insecure type-systems or to restrictions
3669        on inheritance that make it less flexible than untyped Smalltalk
3670        inheritance.  We present a new typed model of inheritance that
3671        allows more of the flexibility of Smalltalk inheritance within a
3672        statically-typed system.  Significant features of our analysis are
3673        the introduction of polymorphism into the typing of inheritance and
3674        the uniform application of inheritance to objects, classes and
3675        types.  The resulting notion of {\em type inheritance} allows us to
3676        show that the type of an inherited object is an inherited type but
3677        not always a subtype.
3678    }
3679}
3680
3681@inproceedings{MMR92,
3682    keywords    = {},
3683    contributer = {gjditchfield@plg},
3684    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3685    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3686                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3687    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3688    year        = 1992,
3689    month       = aug,
3690    pages       = {295-312},
3691    organization= {USENIX Association},
3692    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3693    abstract    = {
3694        This paper reports our experiences integrating the Sun Microsystems
3695        RPC and XDR protocol specifications into the C++ model of
3696        input/output streams.  As part of the {\it Renaissance} operating
3697        system project, we wish to construct network servers and clients,
3698        written in C++, which interoperate with existing UNIX clients
3699        and servers.  We discovered that, although it would be possible to
3700        re-implement the procedural based XDR/RPC implementation
3701        distributed by Sun Microsystems in C++, it is far cleaner to
3702        integrate the protocols with the C++ I/O stream model.  We
3703        feel the resulting model provides a cleaner way of implementing RPC
3704        clients and servers without losing functionality or compatibility
3705        with existing clients and servers.
3706    }
3707}
3708
3709@inproceedings{Zuo08,
3710    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3711    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
3712    title       = {An Intelligent Multi-Port Memory},
3713    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3714    month       = dec,
3715    year        = 2008,
3716    pages       = {251-254},
3717    publisher   = {IEEE Computer Society},
3718    address     = {Los Alamitos, CA, USA},
3719}
3720
3721@book{Francez96,
3722    keywords    = {await, formal},
3723    contributer = {pabuhr@plg},
3724    author      = {Nissim Francez and Ira R. Forman},
3725    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3726    publisher   = {Addison-Wesley},
3727    address     = {Boston},
3728    series      = {ACM Press Books},
3729    year        = 1996,
3730}
3731
3732@article{Labreche90,
3733    keywords    = {concurrency, C++},
3734    contributer = {pabuhr@plg},
3735    author      = {Pierre Labr{\`{e}}che},
3736    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3737    journal     = sigplan,
3738    volume      = 25,
3739    number      = 4,
3740    month       = apr,
3741    year        = 1990,
3742    pages       = {20-32},
3743}
3744
3745@inproceedings{interfaces,
3746    keywords    = {parameterized interfaces, classes, recursion/inheritance},
3747    contributer = {gjditchfield@plg},
3748    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
3749        Walter G. Olthoff},
3750    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
3751    crossref    = "OOPSLA89",
3752    pages       = {457-467},
3753    abstract    = {
3754        This paper develops a system of explicit interfaces for
3755        object-oriented programming.  The system provides the benefits of
3756        module interfaces found in languages like Ada and Modula-2 while
3757        preserving the expressiveness that gives untyped object-oriented
3758        languages like Smalltalk their flexibility.  Interfaces are
3759        interpreted as polymorphic types to make the system sufficiently
3760        powerful.  We use interfaces to analyze the properties of
3761        inheritance, and identify three distinct kinds of inheritance in
3762        object-oriented programming, corresponding to objects, classes, and
3763        interfaces, respectively.  Object interfaces clarify the
3764        distinction between interface containment and inheritance and give
3765        insight into limitations caused by equating the notions of type and
3766        class in many typed object-oriented programming languages.
3767        Interfaces also have practical consequences for design,
3768        specification, and maintenance of object-oriented systems.
3769    }
3770}
3771
3772@phdthesis{Girard72,
3773    keywords    = {universal quantification},
3774    contributer = {gjditchfield@plg},
3775    author      = {J.-Y. Girard},
3776    title       = {Interpretation fonctionelle et elimination des coupures de
3777        l'arithmetique d'ordre superieur},
3778    school      = {Universite Paris},
3779    year        = {1972}
3780}
3781
3782@article{Karaorman93,
3783    keywords    = {Eiffel, concurrency libraries},
3784    contributer = {pabuhr@plg},
3785    author      = {Murat Karaorman and John Bruno},
3786    title       = {Introducing Concurrency to a Sequential Language},
3787    journal     = cacm,
3788    month       = sep,
3789    year        = 1993,
3790    volume      = 36,
3791    number      = 9,
3792    pages       = {103-116}
3793}
3794
3795@book{Corman92,
3796    keywords    = {PRAM, parallel algorithms},
3797    contributer = {pabuhr@plg},
3798    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3799    title       = {Introduction to Algorithms},
3800    publisher   = {MIT Press/McGraw-Hill},
3801    address     = {Cambridge},
3802    series      = {Electrical Engineering and Computer Science Series},
3803    year        = 1992,
3804}
3805
3806@book{Hopcroft79,
3807    keywords    = {finite-state machine, push-dowm automata},
3808    contributer = {pabuhr@plg},
3809    author      = {John E. Hopcroft and Jeffrey D. Ullman},
3810    title       = {Introduction to Automata Theory, Languages and Computation},
3811    publisher   = {Addison-Wesley},
3812    address     = {Boston},
3813    year        = 1979,
3814}
3815
3816@techreport{walker87,
3817    keywords    = {CCS},
3818    contributer = {gjditchfield@plg},
3819    author      = {David Walker},
3820    title       = {Introduction to a Calculus of Communicating Systems},
3821    institution = {Laboratory for Foundations of Computer Science},
3822    year        = 1987,
3823    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3824    month       = jun,
3825    number      = {ECS-LFCS-87-22},
3826}
3827
3828@article{katzenelson83a,
3829    author      = {Jacob Katzenelson},
3830    title       = {Introduction to Enhanced C (EC)},
3831    journal     = spe,
3832    volume      = 13,
3833    number      = 7,
3834    year        = 1983,
3835    month       = jul,
3836    pages       = {551-576},
3837}
3838
3839@book{Deitel90,
3840    keywords    = {concurrency, operating systems},
3841    contributer = {pabuhr@plg},
3842    author      = {Harvey M. Deitel},
3843    title       = {An Introduction to Operating Systems},
3844    publisher   = {Addison-Wesley},
3845    address     = {Boston},
3846    year        = 1990,
3847    edition     = {2nd},
3848}
3849
3850@techreport{Birrell89,
3851    keywords    = {threads, monitors},
3852    contributer = {pabuhr@plg},
3853    author      = {Andrew D. Birrell},
3854    title       = {An Introduction to Programming with Threads},
3855    institution = {Digital Systems Research Center},
3856    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3857    number      = {35},
3858    month       = jan,
3859    year        = 1989,
3860    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3861
3862}
3863
3864@article{t/o,
3865    keywords    = {Trellis/Owl},
3866    contributer = {gjditchfield@plg},
3867    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3868    title       = {An Introduction to Trellis/Owl},
3869    journal     = sigplan,
3870    volume      = 21,
3871    number      = 11,
3872    year        = 1986,
3873    month       = nov,
3874    pages       = {9-16},
3875}
3876
3877@inproceedings{Pharr12,
3878    title       = {ispc: A {SPMD} compiler for high-performance CPU programming},
3879    author      = {Pharr, Matt and Mark, William R},
3880    booktitle   = {Innovative Parallel Computing (InPar), 2012},
3881    pages       = {1--13},
3882    year        = {2012},
3883    month       = may,
3884    address     = {San Jose, CA, USA},
3885    publisher   = {IEEE},
3886}
3887
3888@inproceedings{DeLozier13,
3889    keywords    = {C++, local pointers, memory safety, type-safety},
3890    author      = {DeLozier, Christian and Eisenberg, Richard and Nagarakatte, Santosh and Osera, Peter-Michael and Martin, Milo M.K. and Zdancewic, Steve},
3891    title       = {{I}ronclad {C++}: A Library-augmented Type-safe Subset of {C++}},
3892    booktitle   = {Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages \& Applications},
3893    series      = {OOPSLA'13},
3894    year        = {2013},
3895    address     = {Indianapolis, Indiana, USA},
3896    pages       = {287-304},
3897    publisher   = {ACM},
3898}
3899
3900@inproceedings{Hibbard77,
3901    keywords    = {algol-68, concurrency},
3902    contributer = {pabuhr@plg},
3903    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3904    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3905    booktitle   = {Proceedings of the 5th Annual iii Conference},
3906    address     = {Guidel, France},
3907    month       = may,
3908    year        = 1977,
3909    pages       = {203-221}
3910}
3911
3912@inproceedings{Miller97,
3913    keywords    = {exception handling, software-engineering},
3914    contributer = {pabuhr@plg},
3915    author      = {Robert Miller and Anand Tripathi},
3916    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
3917    booktitle   = {ECOOP'97},
3918    publisher   = {Springer},
3919    volume      = 1241,
3920    series      = {Lecture Notes in Computer Science},
3921    year        = 1997,
3922    pages       = {85-103}
3923}
3924   
3925@article{Murer96,
3926    keywords    = {interators, generators, cursors},
3927    contributer = {pabuhr@plg},
3928    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3929    title       = {Iteration Abstraction in Sather},
3930    journal     = toplas,
3931    month       = jan,
3932    year        = 1996,
3933    volume      = 18,
3934    number      = 1,
3935    pages       = {1-15},
3936}
3937
3938% J
3939                 
3940@book{Java,
3941    keywords    = {Java},
3942    contributer = {pabuhr@plg},
3943    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3944    title       = {The {Java} Language Specification},
3945    publisher   = {Addison-Wesley},
3946    address     = {Reading},
3947    year        = 2000,
3948    edition     = {2nd},
3949}
3950
3951@manual{Java8,
3952    keywords    = {Java SE 8},
3953    contributer = {pabuhr@plg},
3954    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3955    title       = {{Java} Language Specification},
3956    publisher   = {Oracle},
3957    year        = 2015,
3958    edition     = {{J}ava {SE} 8},
3959}
3960
3961@manual{JUC,
3962    keywords    = {Java concurrency library},
3963    contributer = {pabuhr@plg},
3964    title       = {java.util.concurrency},
3965    author      = {Doug Lea},
3966    organization= {Oracle},
3967    year        = 2014,
3968    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}},
3969}
3970
3971% K
3972
3973@inproceedings{Buhr96b,
3974    author      = {Peter A. Buhr and Martin Karsten and Jun Shih},
3975    title       = {{\small\textsf{KDB}}: A Multi-threaded Debugger for Multi-threaded Applications},
3976    booktitle   = {Proc. of SPDT'96: SIGMETRICS Symp. on Parallel and Distributed Tools},
3977    publisher   = {ACM Press},
3978    address     = {Philadelphia, Pennsylvania, U.S.A.},
3979    month       = may,
3980    year        = 1996,
3981    pages       = {80-87},
3982}
3983
3984@article{Duggan96,
3985    keywords    = {concurrency, critical section},
3986    contributer = {pabuhr@plg},
3987    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
3988    title       = {Kinded Type Inference for Parametric Overloading},
3989    journal     = acta,
3990    volume      = 33,
3991    number      = 1,
3992    year        = 1996,
3993    pages       = {21-68},
3994}
3995
3996@article{Peter35,
3997    keywords    = {recursion, Ackermann function},
3998    contributer = {pabuhr@plg},
3999    author      = {R{\'{o}}zsa P{\'{e}}ter},
4000    title       = {Konstruktion nichtrekursiver Funktionen},
4001    publisher   = {Springer},
4002    journal     = mathann,
4003    number      = 111,
4004    volume      = 1,
4005    pages       = {42-60},
4006    month       = dec,
4007    year        = 1935,
4008}
4009
4010% L
4011
4012@TechReport{WVWR88:L,
4013    contributer = {gjditchf@plg},
4014    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
4015    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
4016    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
4017    year        = 1988,
4018    number      = {88-3},
4019    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
4020                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
4021                   ED Nijmegen, The Netherlands},
4022    month       = apr,
4023    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
4024                   \item A trivial type, ``!'', with a single element.
4025                   \item Labelled types, distinct from each other.
4026                   ``!False'' and ``!True'' are distinct types, each
4027                   containing a single value serving as boolean false and
4028                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
4029                   type containing only 2.
4030                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
4031                   types are abbreviations for disjunctions.
4032                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
4033                   ``Re'' and ``Im'' are type labels that distinguish between the
4034                   fields.
4035                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
4036                   and dyadic infix functions.
4037                   \item Function types, universal types, existential types,
4038                   and subtyping (viewed as coercion), as in Fun.
4039                   \end{itemize}
4040                   Disjunctions and conjunctions types are associative and
4041                   commutative (i.e. flat).  Each type has a matching
4042                   constructor.  Functions use pattern matching on type
4043                   labels to strip labels and extract conjunction fields:
4044                   \begin{verbatim}
4045                   \lambda n {0...1000000 Guilders}. ... n ...
4046                   -- both argument and n are amounts in Guilders.
4047                   \lambda n {0...1000000} Guilders. ... n ...
4048                   -- argument in Guilders, but n is in 0...1000000.
4049                   \end{verbatim}
4050                   ``Function bundles'' (conjunctions of functions), applied
4051                   to arguments, replace Dijkstra's guarded if...fi, but the
4052                   bundles are first-class and the guards are part of their
4053                   type.
4054
4055                   The same trick used to define the type ``2'' is used to
4056                   move absolute times into the type system, to allow static
4057                   checking. ``0`'' denotes a time before the system begins
4058                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
4059                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
4060                   of a value of type a that will be available no later
4061                   (earlier) than time t.  Universals and existentials use
4062                   subtyping to parameterize functions by start time:
4063                   \begin{verbatim}
4064                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
4065                   f{then} y -- argument y must be available at time ``then''.
4066                   \end{verbatim}
4067                   Functions can return before their arguments are available
4068                   if they don't use them.  However, function {\em bundles}
4069                   can't return until their result type is known, so the
4070                   lower and upper time bounds of the bundle are the
4071                   second-last upper bound of the component functions: at
4072                   that time, there is only one alternative left.
4073
4074                   Explicit time parameterization allows slack in time
4075                   specification.  Tools could point out slack or determine
4076                   degree of parallelism.}
4077}
4078
4079@mastersthesis{Clarke90,
4080    keywords    = {concurrency, postponing requests},
4081    contributer = {pabuhr@plg},
4082    author      = {Charles L. A. Clarke},
4083    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
4084    school      = {University of Waterloo},
4085    year        = 1990,
4086    address     = {Waterloo, Ontario, Canada, N2L 3G1}
4087}
4088
4089@article{Tennent77,
4090    keywords    = {abstraction, correspondence, Pascal},
4091    contributer = {gjditchfield@plg},
4092    author      = {R. D. Tennent},
4093    title       = {Language Design Methods Based on Semantic Principles},
4094    journal     = acta,
4095    year        = 1977,
4096    volume      = 8,
4097    number      = 2,
4098    pages       = {97-112},
4099    note        = {reprinted in \cite{pldesign}},
4100    abstract    = {
4101        Two language design methods based on principles derived from the
4102        denotational approach to programming language semantics are
4103        described and illustrated by an application to the language Pascal.
4104        The principles are, firstly, the correspondence between parametric
4105        and declarative mechanisms and secondly, a principle of abstraction
4106        for programming languages adapted from set theory.  Several useful
4107        extensions and generalizations of Pascal emerge by applying these
4108        principles, including a solution to the array parameter problem,
4109        and a modularization facility.
4110    },
4111}
4112
4113@article{Liskov86,
4114    keywords    = {synchronous communication, concurrency},
4115    contributer = {pabuhr@plg},
4116    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
4117    title       = {Limitations of Synchronous Communication with Static
4118                   Process Structure in Languages for Distributed Computing},
4119    journal     = {},
4120    volume      = {},
4121    number      = {},
4122    month       = {},
4123    year        = {},
4124    pages       = {},
4125}
4126
4127@article{Linda,
4128    keywords    = {Linda, concurrency},
4129    contributer = {pabuhr@plg},
4130    author      = {Nicholas Carriero and David Gelernter},
4131    title       = {Linda in Context},
4132    journal     = cacm,
4133    volume      = 32,
4134    number      = 4,
4135    month       = apr,
4136    year        = 1989,
4137    pages       = {444-458}
4138}
4139
4140@book{Weissman67,
4141    keywords    = {lisp},
4142    author      = {Clark Weissman},
4143    title       = {Lisp 1.5 Primer},
4144    publisher   = {Dickenson Publishing},
4145    address     = {Belmont},
4146    year        = 1967,
4147}
4148
4149@article{Sundell08,
4150    keywords    = {lock free, deque},
4151    contributer = {pabuhr@plg},
4152    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
4153    title       = {Lock-free Deques and Doubly Linked Lists},
4154    journal     = {J. Parallel Distrib. Comput.},
4155    volume      = 68,
4156    number      = 7,
4157    year        = 2008,
4158    pages       = {1008-1020},
4159}
4160
4161@misc{Matsakis17,
4162    keywords    = {Rust, Chalk, PROLOG},
4163    contributer = {a3moss@uwaterloo.ca},
4164    author      = {Nicholas Matsakis},
4165    title       = {Lowering {Rust} traits to logic},
4166    month       = jan,
4167    year        = 2017,
4168    howpublished= {\href{http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/}
4169                  {http://smallcultfollowing.com/\-babysteps/\-blog/\-2017/\-01/\-26/\-lowering-rust-traits-to-logic/}},
4170    optnote     = {Accessed: 2019-01},
4171}
4172
4173@article{Cormack89,
4174    keywords    = {parsing, LR, error recovery},
4175    contributer = {pabuhr@plg},
4176    author      = {Gordon V. Cormack},
4177    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
4178    journal     = sigplan,
4179    volume      = 24,
4180    number      = 7,
4181    month       = jul,
4182    year        = 1989,
4183    pages       = {161-169},
4184    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
4185}
4186
4187% M
4188
4189@book{M68K,
4190    keywords    = {M680XX, Motorola},
4191    contributer = {pabuhr@plg},
4192    key         = {Motorola},
4193    title       = {M68000 Family Programmer's Reference Manual},
4194    publisher   = {Motorola},
4195    year        = 1992,
4196}
4197
4198@misc{Haberman16,
4199    keywords    = {C++ template expansion},
4200    contributer = {a3moss@uwaterloo.ca},
4201    author      = {Josh Haberman},
4202    title       = {Making arbitrarily-large binaries from fixed-size {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} code},
4203    year        = 2016,
4204    howpublished= {\href{http://blog.reverberate.org/2016/01/making-arbitrarily-large-binaries-from.html}
4205                  {
4206          {http://blog.reverberate.org/\-2016/\-01/\-making-arbitrarily-large-binaries-from.html}
4207          }},
4208    optnote     = {Accessed: 2016-09},
4209}
4210
4211@article{c++libs,
4212    keywords    = {directory structure},
4213    contributer = {gjditchfield@plg},
4214    author      = {J. M. Coggins and G. Bollella},
4215    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
4216    journal     = sigplan,
4217    year        = 1989,
4218    month       = jun, volume = 24, number = 6, pages = {37-48},
4219    abstract    = {
4220        This paper describes a scheme we have used to manage a large
4221        library written in the C++ language.  The scheme imposes a
4222        directory structure, and represents dependency hierarchy in a
4223        globally accessible file we call the 'prelude' file.  We also
4224        discuss the structure of the description files (makefiles) used
4225        with the UNIX options we have found to be useful in reducing the
4226        size of the library, and how to minimize recompilation time after
4227        trivial changes to the source code of the library.
4228    }
4229}
4230
4231@inproceedings{mprof,
4232    keywords    = {malloc},
4233    contributer = {gjditchfield@plg},
4234    author      = {Benjamin Zorn and Paul Hilfinger},
4235    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
4236    booktitle   = {Summer 1988 {USENIX} proceedings},
4237    year        = 1988
4238}
4239
4240@manual{MMTk,
4241    keywords    = {Java memory management},
4242    contributer = {pabuhr@plg},
4243    title       = {MMTk: The Memory Management Toolkit},
4244    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
4245    month       = sep,
4246    year        = 2006,
4247    note        = {\textsf{http://cs.anu.edu.au/\-$\sim$Robin.Garner/\-mmtk-guide.pdf}},
4248}
4249
4250@article{Adve10,
4251    keywords    = {Java memory management},
4252    contributer = {pabuhr@plg},
4253    author      = {Sarita V. Adve and Hans-J. Boehm},
4254    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
4255    journal     = cacm,
4256    volume      = 53,
4257    number      = 8,
4258    month       = aug,
4259    year        = 2010,
4260    pages       = {90-101},
4261    publisher   = {ACM},
4262    address     = {New York, NY, USA},
4263}
4264@techreport{Mesa,
4265    keywords    = {monitors, packages},
4266    contributer = {pabuhr@plg},
4267    author      = {James G. Mitchell and William Maybury and Richard Sweet},
4268    title       = {Mesa Language Manual},
4269    institution = {Xerox Palo Alto Research Center},
4270    number      = {CSL--79--3},
4271    month       = apr,
4272    year        = 1979
4273}
4274
4275@article{Andrews89,
4276    keywords    = {semaphore, split-binary, baton},
4277    contributer = {pabuhr@plg},
4278    author      = {Gregory R. Andrews},
4279    title       = {A Method for Solving Synronization Problems},
4280    journal     = scp,
4281    volume      = 13,
4282    number      = 4,
4283    month       = dec,
4284    year        = 1989,
4285    pages       = {1-21},
4286}
4287
4288@inproceedings{Mitchell78,
4289    keywords    = {Mesa},
4290    contributer = {pabuhr@plg},
4291    author      = {James G. Mitchell},
4292    title       = {Mesa: A Designer's User Perspective},
4293    booktitle   = {Spring CompCom 78},
4294    organization= {Sixteenth IEEE Computer Society International Conference},
4295    address     = {San Francisco, California, U.S.A.},
4296    month       = feb,
4297    year        = 1978,
4298    pages       = {36-39},
4299    note        = {IEEE Catalog No. 78CH1328-4C},
4300}
4301
4302@article{Gentleman81,
4303    keywords    = {messages, concurrency},
4304    contributer = {pabuhr@plg},
4305    author      = {W. Morven Gentleman},
4306    title       = {Message Passing between Sequential Processes:
4307                   the Reply Primitive and the Administrator Concept},
4308    journal     = spe,
4309    month       = may,
4310    year        = 1981,
4311    volume      = 11,
4312    number      = 5,
4313    pages       = {435-466}
4314}
4315
4316@article{Cormack88,
4317    keywords    = {concurrency},
4318    contributer = {pabuhr@plg},
4319    author      = {G. V. Cormack},
4320    title       = {A Micro Kernel for Concurrency in C},
4321    journal     = spe,
4322    month       = may,
4323    year        = 1988,
4324    volume      = 18,
4325    number      = 4,
4326    pages       = {485-491}
4327}
4328
4329@article{Buhr90a,
4330    keywords    = {concurrency, light-weight process, shared memory},
4331    contributer = {pabuhr@plg},
4332    author      = {Peter A. Buhr and Richard A. Stroobosscher},
4333    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4334    journal     = spe,
4335    volume      = 20,
4336    number      = 9,
4337    month       = sep,
4338    year        = 1990,
4339    pages       = {929-963},
4340}
4341
4342@techreport{uSystem,
4343    keywords    = {C, concurrency, light-weight process, shared memory},
4344    contributer = {pabuhr@plg},
4345    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4346    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4347    institution = {Department of Computer Science, University of Waterloo},
4348    address     = {Waterloo, Ontario, Canada, N2L 3G1},
4349    month       = sep,
4350    year        = 1994,
4351    note        = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uSystem.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-uSystem.pdf}},
4352}
4353
4354@book{Mips4000,
4355    key         = {Mips4000},
4356    title       = {MIPS R4000 Microprocessor User's Manual},
4357    publisher   = {MIPS Computer Systems Inc},
4358    year        = 1991,
4359}
4360
4361@inproceedings{Mjolner,
4362    keywords    = {Mjolner, hierarchical windows},
4363    contributer = {pabuhr@plg},
4364    author      = {G\"{o}rel Hedin and Boris Magnusson},
4365    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4366    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4367    organization= {ECOOP'88},
4368    publisher   = {Springer},
4369    volume      = 322,
4370    editor      = {S. Gjessing and K. Nygaard},
4371    address     = {Oslo, Norway},
4372    month       = aug,
4373    year        = 1988,
4374    pages       = {41-54},
4375    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4376}
4377
4378@article{Skillicorn98,
4379    keywords    = {parallel models},
4380    contributer = {pabuhr@plg},
4381    author      = {David B. Skillicorn and Domenico Talia},
4382    title       = {Models and Languages for Parallel Computation},
4383    journal     = acmcs,
4384    volume      = 30,
4385    number      = 2,
4386    month       = jun,
4387    year        = 1998,
4388    pages       = {123-169},
4389}
4390
4391@article{Werther96,
4392    keywords    = {C++, language syntax},
4393    contributer = {pabuhr@plg},
4394    author      = {Ben Werther and Damian Conway},
4395    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4396    journal     = sigplan,
4397    volume      = 31,
4398    number      = 11,
4399    month       = nov,
4400    year        = 1996,
4401    pages       = {74-82},
4402}
4403
4404@book{Alexandrescu01,
4405    keywords    = {c design-patterns programming},
4406    contributer = {pabuhr@plg},
4407    author      = {Andrei Alexandrescu},
4408    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4409    publisher   = {Addison-Wesley Professional},
4410    address     = {Boston},
4411    month       = feb,
4412    year        = 2001,
4413    isbn        = {0201704315},
4414}
4415
4416@book{Tanenbaum92,
4417    keywords    = {concurrency, operating systems},
4418    contributer = {pabuhr@plg},
4419    author      = {Andrew S. Tanenbaum},
4420    title       = {Modern Operating Systems},
4421    publisher   = {Prentice-Hall},
4422    address     = {Englewood Cliffs},
4423    year        = 1992,
4424}
4425
4426@article{Wirth77,
4427    keywords    = {modules, coroutines},
4428    contributer = {pabuhr},
4429    author      = {Niklaus Wirth},
4430    title       = {Modula: a Language for Modular Multiprogramming},
4431    journal     = spe,
4432    month       = {January--February},
4433    year        = 1977,
4434    volume      = 7,
4435    number      = 1,
4436    pages       = {3-35},
4437}
4438
4439@book{Harbison92,
4440    contributer = {mhcoffin},
4441    author      = {Samuel P. Harbison},
4442    title       = {Modula-3},
4443    publisher   = {Prentise Hall, Inc.},
4444    year        = {1992},
4445    comment     = {This is a textbook for learning Modula-3.}
4446}
4447
4448@techreport{Modula-3:old,
4449    keywords    = {Modula-3, inheritance, type extension},
4450    contributer = {gjditchfield@plg},
4451    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4452                   Jordan and Bill Kalsow and Greg Nelson},
4453    title       = {Modula-3 Report},
4454    institution = {Systems Research Center},
4455    address     = {130 Lytton Avenue, Palo Alto, California  94301},
4456    month       = aug,
4457    year        = 1988,
4458    number      = 31
4459}
4460 
4461@article{Dueck90,
4462    keywords    = {attribute grammars},
4463    contributer = {pabuhr@plg},
4464    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
4465    title       = {Modular Attribute Grammars},
4466    journal     = {The Computer Journal},
4467    month       = apr,
4468    year        = 1990,
4469    volume      = 33,
4470    number      = 2,
4471    pages       = {164-172},
4472}
4473
4474@article{Yemini85,
4475    keywords    = {exception handling},
4476    contributer = {pabuhr@plg},
4477    author      = {Shaula Yemini and Daniel M. Berry},
4478    title       = {A Modular Verifiable Exception-Handling Mechanism},
4479    journal     = toplas,
4480    month       = apr,
4481    year        = 1985,
4482    volume      = 7,
4483    number      = 2,
4484    pages       = {214-243},
4485}
4486
4487@article{Buhr95b,
4488    keywords    = {concurrency, monitors, classification},
4489    contributer = {pabuhr@plg},
4490    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4491    title       = {Monitor Classification},
4492    journal     = acmcs,
4493    volume      = 27,
4494    number      = 1,
4495    month       = mar,
4496    year        = 1995,
4497    pages       = {63-107},
4498}
4499
4500@article{Hoare74,
4501    keywords    = {monitor},
4502    contributer = {pabuhr@plg},
4503    author      = {C. A. R. Hoare},
4504    title       = {Monitors: An Operating System Structuring Concept},
4505    journal     = cacm,
4506    volume      = 17,
4507    number      = 10,
4508    month       = oct,
4509    year        = 1974,
4510    pages       = {549-557},
4511    annote      = {
4512    }
4513}
4514
4515@inbook{Buhr99a,
4516    keywords    = {concurrency, monitors, classification},
4517    contributer = {pabuhr@plg},
4518    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4519    title       = {Encyclopedia of Computer Science and Technology},
4520    chapter     = {Monitor Taxonomy},
4521    publisher   = {Marcel Dekker, Inc},
4522    volume      = {40, supplement 25},
4523    year        = 1999,
4524    pages       = {191-212},
4525}
4526%    editor     = {Allen Kent and James G. Williams},
4527
4528@manual{MPI,
4529    keywords    = {MPI},
4530    contributer = {pabuhr@plg},
4531    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
4532    organization= {Message Passing Interface Forum},
4533    address     = {University of Tennessee, Knoxville, Tennessee},
4534    month       = jun,
4535    year        = 2015,
4536    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}},
4537}
4538
4539@article{multilisp,
4540    keywords    = {futures, scheme},
4541    contributer = {gjditchfield@plg},
4542    author      = {Halstead, Jr.,Robert H.},
4543    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
4544    journal     = toplas,
4545    volume      = 7,
4546    number      = 4,
4547    pages       = {501-538},
4548    month       = oct,
4549    year        = 1985,
4550    comment     = {
4551        (future E) begins evaluating the expression E, and
4552        returns a ``future'' representing the value.  When evaluation is
4553        finished, the value of E replaces the future.  Operations that need
4554        the future's value suspend until it is available.  Assignment and
4555        parameter passing do not suspend.  Future introduces concurrency
4556        between the calculation of a value and its use; reference to
4557        futures is a synchronization mechanism.
4558
4559        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4560        applies F to the arguments.  pcall can be built from future and a
4561        ``touch'' operation.  pcall is included because it may not be easy
4562        to determine that there are no critical sections between the future
4563        expression and the code between the future call and the value's
4564        first use.
4565
4566        (delay E) is like future, but E's process does not begin until its
4567        value is needed.  It provides lazy evaluation.  Replacing delay
4568        with future would launch an infinite number of processes.
4569    }
4570}
4571
4572@techreport{Bretthauer89,
4573    keywords    = {multiple inheritance},
4574    contributer = {pabuhr@plg},
4575    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp}, 
4576    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4577    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4578    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4579    number      = {Arbeitspapiere der GMD 415},
4580    month       = nov,
4581    year        = 1989,
4582}
4583
4584@inproceedings{c++:multinh,
4585    keywords    = {C++, multiple inheritance, implementation},
4586    contributer = {gjditchfield@plg},
4587    author      = {Bjarne Stroustrup},
4588    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4589    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
4590    month       = may, year = 1987
4591}
4592
4593@inproceedings{st:mult,
4594    keywords    = {smalltalk, multiple inheritance, implementation},
4595    contributer = {gjditchfield@plg},
4596    author      = {Daniel H. H. Ingalls and A. H. Borning},
4597    title       = {Multiple Inheritance in Smalltalk-80},
4598    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
4599    month       = aug,
4600    year        = 1982,
4601    pages       = {234-238},
4602    organization= {American Association for Artificial Intelligence},
4603    comment     = {
4604        Methods are looked up in the current class, the superclasses, the
4605        supersuperclasses, etc.  The same method can be inherited
4606        repeatedly, but having different methods for the same message is an
4607        error.  Only one copy is made for multiply-inherited fields.
4608
4609        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
4610        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4611        super m}.  {\tt all.m} invokes all inherited versions of m.
4612
4613        Methods on the first-superclass chain are found as usual.  Methods
4614        from other superclasses are copied into the class dictionary.  An
4615        error method is created if inherited methods conflict.  The parser
4616        is changed to allow compound selectors.  {\tt Object
4617        messageNotUnderstood} is changed to look for compound selectors and
4618        dynamically add a method with the right name and body to the class.
4619        When methods are edited, they are copied into subclasses and
4620        compound selector versions are deleted, as appropriate.
4621    }
4622}
4623
4624@article{Lamport86I,
4625    keywords    = {software solutions, N-thread, mutual exclusions},
4626    contributer = {pabuhr@plg},
4627    author      = {Leslie Lamport},
4628    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4629    journal     = jacm,
4630    volume      = 33,
4631    number      = 2,
4632    month       = apr,
4633    year        = 1986,
4634    pages       = {313--326},
4635    numpages    = {14},
4636    publisher   = {ACM},
4637    address     = {New York, NY, USA},
4638}
4639
4640@article{Lamport86II,
4641    keywords    = {software solutions, N-thread, mutual exclusions},
4642    contributer = {pabuhr@plg},
4643    author      = {Leslie Lamport},
4644    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4645    journal     = jacm,
4646    volume      = 33,
4647    number      = 2,
4648    month       = apr,
4649    year        = 1986,
4650    pages       = {327--348},
4651    numpages    = {22},
4652    publisher   = {ACM},
4653    address     = {New York, NY, USA},
4654}
4655
4656@article{Burns78,
4657    keywords    = {hardware, N-process solution, O(N)},
4658    contributer = {pabuhr@plg},
4659    author      = {James E. Burns},
4660    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4661    journal     = {SIGACT News},
4662    volume      = 10,
4663    number      = 2,
4664    month       = {Summer},
4665    year        = 1978,
4666    pages       = {42-47},
4667}
4668
4669@inproceedings{Burns80,
4670    keywords    = {N-process software solution},
4671    contributer = {pabuhr@plg},
4672    author      = {James E. Burns and Nancy A. Lynch},
4673    title       = {Mutual Exclusion using Indivisible Reads and Writes},
4674    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4675    year        = 1980,
4676    pages       = {833-842},
4677    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]},
4678    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4679}
4680
4681@article{Peterson81,
4682    keywords    = {concurrency, critical section},
4683    contributer = {pabuhr@plg},
4684    author      = {G. L. Peterson},
4685    title       = {Myths About the Mutual Exclusion Problem},
4686    journal     = ipl,
4687    year        = 1981,
4688    month       = jun,
4689    volume      = 12,
4690    number      = 3,
4691    pages       = {115-116},
4692}
4693
4694% N
4695
4696@techreport{Drepper03,
4697    keywords    = {NPTL, threading, 1:1 model},
4698    contributer = {pabuhr@plg},
4699    author      = {Ulrich Drepper and Ingo Molnar},
4700    title       = {The Native POSIX Thread Library for Linux},
4701    institution = {Red Hat},
4702    year        = 2003,
4703    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}},
4704}
4705
4706@article{Haddon77,
4707    keywords    = {monitors, nested monitor calls},
4708    contributer = {pabuhr@plg},
4709    author      = {Bruce K. Haddon},
4710    title       = {Nested Monitor Calls},
4711    journal     = osr,
4712    volume      = 11,
4713    number      = 4,
4714    month       = oct,
4715    year        = 1977,
4716    pages       = {18-23},
4717}
4718
4719@inproceedings{nesting,
4720    keywords    = {},
4721    contributer = {gjditchfield@plg},
4722    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4723    title       = {Nesting in {Ada} Programs is for the Birds},
4724    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4725        Programming Language},
4726    year        = 1980,
4727    month       = dec, pages = {139-145},
4728    note        = {SIGPLAN Notices, v. 15, n. 11},
4729    abstract    = {
4730        Given a data abstraction construct like the Ada package and in the
4731        light of current thoughts on programming methodology, we feel that
4732        nesting is an anachronism.  In this paper we propose a nest-free
4733        program style for Ada that eschews nested program units and
4734        declarations within blocks and instead heavily utilizes packages
4735        and context specifications as mechanisms for controlling
4736        visibility.  We view this proposal as a first step toward the
4737        development of programming methods that exploit the novel language
4738        features available in Ada.  Consideration of this proposal's
4739        ramifications for data flow, control flow, and overall program
4740        structure substantiates our contention that a tree structure is
4741        seldom a natural representation of a program and that nesting
4742        therefore generally interferes with program development and
4743        readability.
4744    }
4745}
4746
4747@inproceedings{Buhr88,
4748    keywords    = {nested classes, persistence},
4749    contributer = {pabuhr@plg},
4750    author      = {P. A. Buhr and C. R. Zarnke},
4751    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
4752    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4753    publisher   = {Springer},
4754    volume      = 322,
4755    editor      = {S. Gjessing and K. Nygaard},
4756    address     = {Oslo, Norway},
4757    month       = aug,
4758    year        = 1988,
4759    pages       = {128-145},
4760    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4761}
4762
4763@inproceedings{Thompson90new,
4764    keywords    = {Plan 9},
4765    contributer = {pabuhr@plg},
4766    title       = {A New {C} Compiler},
4767    author      = {Ken Thompson},
4768    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
4769    year        = 1990,
4770    pages       = {41-51},
4771    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}},
4772}
4773
4774@article{Trono94,
4775    author      = {John A. Trono},
4776    title       = {A New Exercise in Concurrency},
4777    journal     = {SIGCSE Bulletin},
4778    volume      = {26},
4779    number      = {3},
4780    month       = sep,
4781    year        = {1994},
4782    pages       = {8-10},
4783    publisher   = {ACM},
4784    address     = {New York, NY, USA},
4785}
4786
4787@article{Anderson01,
4788    keywords    = {software solutions, fast path},
4789    contributer = {pabuhr@plg},
4790    author      = {James H. Anderson and Yong-Jik Kim},
4791    title       = {A New Fast-Path Mechanism For Mutual Exclusion},
4792    journal     = {Distributed Computing},
4793    month       = jan,
4794    year        = 2001,
4795    volume      = 14,
4796    number      = 1,
4797    pages       = {17-29},
4798}
4799
4800@article{Lamport74,
4801    keywords    = {concurrency, N-Process solution, O(N)},
4802    contributer = {pabuhr@plg},
4803    author      = {Leslie Lamport},
4804    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
4805    journal     = cacm,
4806    month       = aug,
4807    year        = 1974,
4808    volume      = 17,
4809    number      = 8,
4810    pages       = {453-455},
4811}
4812
4813@book{NeWS,
4814    AUTHOR      = {James Gosling and David S. H. Rosenthal and Richelle J. Arden},
4815    TITLE       = {The {NeWS} Book},
4816    PUBLISHER   = {Springer-Verlag},
4817    YEAR        = {1989}
4818}
4819
4820@article{landin,
4821    keywords    = {},
4822    contributer = {gjditchfield@plg},
4823    author      = {P. J. Landin},
4824    title       = {The Next 700 Programing Languages},
4825    journal     = cacm,
4826    year        = 1966,
4827    volume      = 9,
4828    pages       = {157-164},
4829}
4830
4831@misc{nginx,
4832    key         = {nginx},
4833    author      = {{NGINX}},
4834    howpublished= {\href{https://www.nginx.com}{https://\-www.nginx.com}},
4835}
4836
4837@article{Herlihy05,
4838    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4839    contributer = {pabuhr@plg},
4840    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4841    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4842    journal     = tocs,
4843    volume      = 23,
4844    number      = 2,
4845    month       = may,
4846    year        = 2005,
4847    pages       = {146-196},
4848    numpages    = {51},
4849    publisher   = {ACM},
4850    address     = {New York, NY, USA},
4851}
4852
4853% O
4854
4855@inproceedings{oop:abcl/1,
4856    keywords    = {concurrency, OOPL, futures},
4857    contributer = {gjditchfield@plg},
4858    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4859    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
4860    crossref    = "OOPSLA86",
4861    pages       = {258-268},
4862    comment     = {
4863        Actions for messages sent to an object are executed concurrently
4864        iff the object has no members.  A select construct specifies a set
4865        of message patterns.
4866
4867        Express messages have priority.  If an express message arrives
4868        while an ordinary message is being processed, the action for the
4869        ordinary message is suspended or aborted and the action for the
4870        express message is executed.  The sender decides which class a
4871        message belongs in.  Non-interruptible sections can be defined.
4872
4873        Message sends can be non-blocking, or can block until a reply is
4874        received, at the sender's option.  The receiver can continue to
4875        execute after sending the reply.
4876
4877        Replies can send back ``futures'', and put values in them later.
4878        Futures are queues of values, not single values.  The caller can
4879        use a ``ready?'' predicate to test for empty queue, or can use
4880        operations to get the first or all queue elements; these operations
4881        block if the queue is empty.
4882    }
4883}
4884
4885@techreport{Schmidt95,
4886    keywords    = {ACE, concurrency, library},
4887    contributer = {pabuhr@plg},
4888    author      = {Douglas C. Schmidt},
4889    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4890    institution = {Washington University in St. Louis},
4891    year        = 1995,
4892    number      = 31,
4893    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-$\sim$schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4894}
4895
4896@inproceedings{OOEx,
4897    keywords    = {Exceptions, object-oriented programming languages},
4898    contributer = {gjditchfield@plg},
4899    author      = {Christophe Dony},
4900    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
4901    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
4902    year        = 1988,
4903    pages       = {146-161},
4904    editor      = {S. Gjessing and K. Nygaard},
4905    organization= {DND, The Norwegian Computer Society},
4906    publisher   = {Springer},
4907    comment     = {
4908           Objectives:
4909           - Users can define new exceptions.
4910           - Default handlers can be attached to exceptions.
4911           - Handlers can be attached to classes.
4912           - Handlers can be attached to dynamic entities (expressions).
4913           - Exceptions propagate first along the invocation chain.
4914           - Exceptions should be hierarchically organized classes.
4915           - Handlers should take into account the exception hierarchy (i.e.,
4916             should handle raising of sub-exceptions).
4917           The ``exceptional-event'' class has two subclasses.  ``Warning''
4918           has a ``resume'' method, and ``error'' has ``exit'' and
4919           ``retry'' methods.  Signalling an exception creates an instance
4920           of the exception, whose members are used to pass information
4921           back to the handler.  Handlers are instances of class
4922           ``protect-handler'' with a method ``protect {\em expression}'',
4923           or are methods defined for the class or the exception.
4924    }
4925}
4926
4927@article{CommonObjects,
4928    author      = {A. Snyder},
4929    title       = {Object-Oriented Programming for Common Lisp},
4930    address     = {Palo Alto CA},
4931    year        = 1985,
4932    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4933    journal     = {Report ATC-85-1},
4934}
4935
4936@book{objective-c,
4937    keywords    = {},
4938    author      = {Brad J. Cox},
4939    title       = {Object-oriented programming; an evolutionary approach},
4940    publisher   = {Addison-Wesley},
4941    address     = {Boston},
4942    year        = 1986
4943}
4944
4945@misc{obj-c-book,
4946    keywords    = {objective-c},
4947    contributor = {pabuhr@plg},
4948    key         = {Objective-C},
4949    author      = {Objective-C},
4950    publisher   = {Apple Inc.},
4951    year        = 2014,
4952    howpublished= {\href{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC}{https://\-developer.apple.com/\-library/archive/\-documentation/\-Cocoa/\-Conceptual/\-ProgrammingWithObjectiveC}},
4953    optnote     = {Accessed: 2018-03}
4954}
4955
4956@misc{xcode7,
4957    keywords    = {objective-c},
4958    contributor = {a3moss@uwaterloo.ca},
4959    key         = {Xcode},
4960    title       = {{X}code 7 Release Notes},
4961    year        = 2015,
4962    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}},
4963    optnote     = {Accessed: 2017-04}
4964}
4965
4966@book{Beta,
4967    keywords    = {Beta, object oriented, concurrency, exceptions},
4968    contributer = {pabuhr@plg},
4969    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
4970    title       = {Object-oriented Programming in the {BETA} Programming Language},
4971    publisher   = {Addison-Wesley},
4972    address     = {Boston},
4973    year        = 1993,
4974}
4975
4976@article{Flavors,
4977    author      = {D. A. Moon},
4978    title       = {Object-Oriented Programming with Flavors},
4979    address     = {Portland OR},
4980    month       = sep,
4981    year        = 1986,
4982    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
4983}
4984
4985@article{Buhr00b,
4986    keywords    = {concurrency, C++, real-time},
4987    contributer = {pabuhr@plg},
4988    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
4989    title       = {Object-Oriented Real-Time Concurrency},
4990    journal     = sigplan,
4991    volume      = 35,
4992    number      = 10,
4993    month       = oct,
4994    year        = 2000,
4995    pages       = {29-46},
4996    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
4997}
4998
4999@book{Meyer88,
5000    keywords    = {Eiffel},
5001    contributer = {pabuhr@plg},
5002    author      = {Bertrand Meyer},
5003    title       = {Object-oriented Software Construction},
5004    publisher   = {Prentice-Hall},
5005    address     = {Englewood Cliffs},
5006    year        = {1988},
5007    series      = {Prentice-Hall International Series in Computer Science},
5008}
5009
5010@article{objectPascal,
5011    keywords    = {objects, modules},
5012    contributer = {gjditchfield@plg},
5013    author      = {Larry Tesler},
5014    title       = {Object Pascal Report},
5015    journal     = {Structured Language World},
5016    year        = 1985,
5017    volume      = 9,
5018    number      = 3,
5019}
5020
5021@misc{obj-c:next,
5022    keywords    = {categories, protocols, Objective C},
5023    contributor = {gjditchfield@angus},
5024    author      = {NeXT Computer, Inc.},
5025    title       = {Objective C Extensions},
5026    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
5027    year        = 1993
5028}
5029
5030@book{Galletly96,
5031    keywords    = {occam},
5032    author      = {John Galletly},
5033    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
5034    publisher   = {{UCL} (University College London) Press},
5035    address     = {London},
5036    edition     = {2nd},
5037    year        = 1996,
5038}
5039
5040@techreport{Morrison88,
5041    keywords    = {objects, concurrency, persistence},
5042    contributer = {pabuhr@plg},
5043    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
5044    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
5045    institution = {Department of Computational Science, University of St. Andrews, Scotland},
5046    number      = {PPRR 57},
5047    month       = jan,
5048    year        = 1988,
5049}
5050
5051@article{Peterson73,
5052    keywords    = {goto, structured programming},
5053    contributer = {pabuhr@plg},
5054    author      = {W. W. Peterson and T. Kasami and N. Tokura},
5055    title       = {On the Capabilities of While, Repeat, and Exit Statements},
5056    journal     = cacm,
5057    month       = aug,
5058    year        = 1973,
5059    volume      = 16,
5060    number      = 8,
5061    pages       = {503-512}
5062}
5063
5064@article{Baker82,
5065    keywords    = {compilation},
5066    contributer = {gjditchfield@plg},
5067    author      = {Theodore P. Baker},
5068    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
5069    journal     = toplas,
5070    year        = 1982,
5071    month       = oct,
5072    volume      = 4,
5073    number      = 4,
5074    pages       = {601-614},
5075    abstract    = {
5076        A simple method is presented for detecting ambiguities and finding
5077        the correct interpretations of expressions in the programming
5078        language Ada.  Unlike previously reported solutions to this
5079        problem, which require multiple passes over a tree structure, the
5080        method described here operates in one bottom-up pass, during which
5081        a directed acyclic graph is produced.  The correctness of this
5082        approach is demonstrated by a brief formal argument.
5083    },
5084    comment     = {
5085        See also \cite{D:overload}.
5086        }
5087}
5088
5089@manual{OpenMP,
5090    keywords    = {concurrency, openmp, spmd},
5091    contributer = {pabuhr@plg},
5092    key         = {OpenMP},
5093    title       = {OpenMP Application Program Interface, Version 4.5},
5094    month       = nov,
5095    year        = 2015,
5096    note        = {\href{https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf}{https://\-www.openmp.org/\-wp-content/\-uploads/\-openmp-4.5.pdf}},
5097}
5098
5099@book{Deitel04,
5100    keywords    = {concurrency, operating systems},
5101    contributer = {pabuhr@plg},
5102    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
5103    title       = {Operating Systems},
5104    publisher   = {Pearson Prentice-Hall},
5105    address     = {Englewood Cliffs},
5106    year        = 2004,
5107    edition     = {3rd},
5108}
5109
5110@book{Stalling98,
5111    keywords    = {concurrency, operating systems},
5112    contributer = {pabuhr@plg},
5113    author      = {William Stallings},
5114    title       = {Operating Systems: Internals and Design Principles},
5115    publisher   = {Prentice-Hall},
5116    address     = {Englewood Cliffs},
5117    year        = 1998,
5118    edition     = {3rd},
5119}
5120
5121@book{Stalling01,
5122    keywords    = {concurrency, operating systems},
5123    contributer = {pabuhr@plg},
5124    author      = {William Stallings},
5125    title       = {Operating Systems: Internals and Design Principles},
5126    publisher   = {Prentice-Hall},
5127    address     = {Englewood Cliffs},
5128    year        = 2001,
5129    edition     = {4th},
5130}
5131
5132@book{Silberschatz91,
5133    keywords    = {concurrency, operating systems},
5134    contributer = {pabuhr@plg},
5135    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
5136    title       = {Operating System Concepts},
5137    publisher   = {Addision-Wesley},
5138    address     = {Boston},
5139    year        = 1991,
5140    edition     = {3rd},
5141}
5142
5143@book{Tanenbaum87,
5144    keywords    = {concurrency, operating systems},
5145    contributer = {pabuhr@plg},
5146    author      = {Andrew S. Tanenbaum},
5147    title       = {Operating Systems : Design and Implementation},
5148    publisher   = {Prentice-Hall},
5149    address     = {Englewood Cliffs},
5150    series      = {Software Series},
5151    year        = 1987,
5152}
5153
5154@book{Hansen73,
5155    keywords    = {monitors},
5156    contributer = {pabuhr@plg},
5157    author      = {Per {Brinch Hansen}},
5158    title       = {Operating System Principles},
5159    publisher   = {Prentice-Hall},
5160    address     = {Englewood Cliffs},
5161    year        = 1973,
5162}
5163
5164@book{Bic03,
5165    keywords    = {concurrency, operating systems},
5166    contributer = {pabuhr@plg},
5167    author      = {Lubomir F. Bic and Alan C. Shaw},
5168    title       = {Operating System Principles},
5169    publisher   = {Prentice-Hall},
5170    address     = {Englewood Cliffs},
5171    year        = 2003,
5172}
5173
5174@techreport{milner88,
5175    keywords    = {},
5176    contributer = {gjditchfield@plg},
5177    author      = {Robin Milner},
5178    title       = {Operational and Algebraic Semantics of Concurrent Processes},
5179    institution = {Laboratory for Foundations of Computer Science},
5180    year        = 1988,
5181    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
5182    month       = feb,
5183    number      = {ECS-LFCS-88-46}
5184}
5185
5186@article{Ganzinger80,
5187    contributer = {a3moss@uwaterloo.ca},
5188    author      = {Ganzinger, Harald and Ripken, Knut},
5189    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
5190    journal     = {SIGPLAN Notices},
5191    issue_date  = {February 1980},
5192    volume      = {15},
5193    number      = {2},
5194    month       = feb,
5195    year        = {1980},
5196    issn        = {0362-1340},
5197    pages       = {30--42},
5198    numpages    = {13},
5199    url         = {http://doi.acm.org/10.1145/947586.947589},
5200    doi         = {10.1145/947586.947589},
5201    publisher   = {ACM},
5202    address     = {New York, NY, USA}
5203}
5204
5205@article{Ford82,
5206    keywords    = {},
5207    contributer = {pabuhr@plg},
5208    author      = {G. Ford and B. Hansche},
5209    title       = {Optional, Repeatable, and Varying Type Parameters},
5210    journal     = sigplan,
5211    volume      = 17,
5212    number      = 2,
5213    month       = feb,
5214    year        = 1982,
5215    pages       = {41-48},
5216}
5217
5218@manual{pli,
5219    keywords    = {PL/I},
5220    contributer = {gjditchfield@plg},
5221    key         = {IBM},
5222    title       = {{OS} and {DOS} {PL/I} Reference Manual},
5223    organization= {International Business Machines},
5224    edition     = {1st},
5225    month       = sep,
5226    year        = 1981,
5227    note        = {Manual GC26-3977-0},
5228}
5229
5230@techreport{D:overload,
5231    keywords    = {overload resolution, compilation},
5232    contributer = {gjditchfield@plg},
5233    author      = {M. Dausmann et. al.},
5234    title       = {Overloading in {Ada}},
5235    institution = {Universitat Karlsruhe},
5236    year        = 1979,
5237    number      = {23/79},
5238    comment     = {
5239        Probably the earliest description of the two-pass (bottom-up,
5240        top-down) overload resolution algorithm. See also
5241        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
5242    }
5243}
5244
5245@article{EB87,
5246    keywords    = {packages, private types, assignment, equality},
5247    contributer = {gjditchfield@plg},
5248    author      = {J. Dana Eckart and Richard J. LeBlanc},
5249    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
5250    journal     = {Computer Languages},
5251    year        = 1987,
5252    volume      = 12,
5253    number      = {3/4},
5254    pages       = {163-172},
5255    abstract    = {
5256        Packages in the Ada language provide a mechanism for extending the
5257        language through the development of additional data types.  Such
5258        types can be better integrated into the language using operator
5259        overloading; however, key limitations prevent new types from being
5260        transparently integrated into the language.  Allowing function
5261        names to overload private type names would give a cleaner and
5262        clearer mechanism for building values of these types.  Furthermore,
5263        by allowing redefinitions of ``:='' and by making it easier to
5264        overload ``='' for private types, Ada coud be transformed into a
5265        more expressive language.
5266    }
5267}
5268
5269@article{PW:overload,
5270    keywords    = {compilation},
5271    contributer = {gjditchfield@plg},
5272    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
5273    title       = {Overloading in Preliminary {Ada}},
5274    journal     = sigplan,
5275    year        = 1980,
5276    month       = nov, volume = 15, number = 11, pages = {47-56},
5277    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language}, 
5278    comment     = {
5279        The two-pass (bottom-up, then top-down) algorithm, with a proof
5280        that two passes suffice.  See also \cite{D:overload}.
5281    }
5282}
5283
5284@article{SR,
5285    keywords    = {concurrency, messages, rendezvous},
5286    contributer = {pabuhr@plg},
5287    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
5288                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
5289    title       = {An Overview of the {SR} Language and Implementation},
5290    journal     = toplas,
5291    month       = jan,
5292    year        = 1988,
5293    volume      = 10,
5294    number      = 1,
5295    pages       = {51-86},
5296}
5297
5298% P
5299
5300@article{Andrews91,
5301    keywords    = {general concurrency},
5302    contributer = {pabuhr@plg},
5303    author      = {Gregory R. Andrews},
5304    title       = {Paradigms for Process Interaction in Distributed Programs},
5305    journal     = acmcs,
5306    volume      = 23,
5307    number      = 1,
5308    month       = mar,
5309    year        = 1991,
5310    pages       = {49-90},
5311}
5312
5313@book{PPC++,
5314    keywords    = {concurrency, parallel, distributed, C++},
5315    contributer = {pabuhr@plg},
5316    editor      = {Gregory V. Wilson and Paul Lu},
5317    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5318    publisher   = {MIT Press},
5319    series      = {Scientific and Engineering Computation Series},
5320    year        = 1996,
5321    pages       = {1-42},
5322}
5323
5324@incollection{Stroustrup96,
5325    keywords    = {concurrency, C++},
5326    contributer = {pabuhr@plg},
5327    author      = {Bjarne Stroustrup},
5328    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5329    editor      = {Gregory V. Wilson and Paul Lu},
5330    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5331    publisher   = {MIT Press},
5332    series      = {Scientific and Engineering Computation Series},
5333    year        = 1996,
5334    pages       = {xxvi-xxvii},
5335}
5336
5337@incollection{Yang96b,
5338    keywords    = {concurrency, C++},
5339    contributer = {pabuhr@plg},
5340    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
5341    editor      = {Gregory V. Wilson and Paul Lu},
5342    title       = {p{C}++},
5343    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5344    publisher   = {MIT Press},
5345    address     = {Cambridge},
5346    series      = {Scientific and Engineering Computation Series},
5347    pages       = {507-546},
5348    year        = 1996,
5349}
5350
5351@article{goguen84,
5352    keywords    = {},
5353    contributer = {gjditchfield@plg},
5354    author      = {Goseph A. Goguen},
5355    title       = {Parameterized Programming},
5356    journal     = ieeese,
5357    year        = 1984,
5358    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
5359    abstract    = {
5360        Parameterized programming is a powerful technique for the reliable
5361        reuse of software.  In this technique, modules are parameterized
5362        over very general interfaces that describe what properties of an
5363        environment are required for the module to work correctly.
5364        Reusability is enhanced by the flexibility of the parameterization
5365        mechanism proposed here.  Reliability is further enhanced by
5366        permitting interface requirements to include more than purely
5367        syntactic information.  This paper introduces three new ideas that
5368        seem especially useful in supporting parameterized programming: 1)
5369        {\em theories}, which declare global properties of program modules
5370        and interfaces; 2) {\em views}, which connect theories with program
5371        modules in an elegant way; and 3) {\em module expressions}, a kind
5372        of general structured program transformation which produces new
5373        modules by modifying and combining existing modules.  Although
5374        these ideas are illustrated with some simple examples in the OBJ
5375        programming language, they should also be taken as proposals for an
5376        Ada library system, for adding modules to Prolog, and as
5377        considerations for future language design efforts.  OBJ is an
5378        ultra-high level programming language, based upon rewrite rules,
5379        that incorporates these ideas, and many others from modern
5380        programming methodology.
5381    }
5382}
5383
5384@inproceedings{c++:templates,
5385    author      = {Bjarne Stroustrup},
5386    contributer = {gjditchfield@plg},
5387    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5388    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5389    organization= {USENIX Association},
5390    year        = 1988, pages = {1-18}
5391}
5392
5393@inproceedings{Boehm85,
5394    keywords    = {second-order unification},
5395    contributer = {gjditchfield@plg},
5396    author      = {Hans-J. Boehm},
5397    title       = {Partial Polymorphic Type Inference is Undecidable},
5398    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
5399    year        = 1985,
5400    pages       = {339-345},
5401    organization= {IEEE Computer Society},
5402    publisher   = {IEEE Computer Society Press},
5403    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5404    summary     = {
5405        Given a base typed lambda calculus with function types, type
5406        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5407        then type inference for the partially typed language
5408        \begin{eqnarray}
5409        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
5410        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
5411        e \tau                  &\Rightarrow& e ?
5412        \end{eqnarray}
5413        is undecidable.
5414    }
5415}
5416
5417@book{Pascal,
5418    keywords    = {Pascal},
5419    contributer = {pabuhr@plg},
5420    author      = {Kathleen Jensen and Niklaus Wirth},
5421    title       = {{P}ascal User Manual and Report, ISO Pascal Standard},
5422    publisher   = {Springer--Verlag},
5423    year        = 1991,
5424    edition     = {4th},
5425    note        = {Revised by Andrew B. Mickel and James F. Miner}
5426}
5427
5428@book{Pascal:old,
5429    keywords    = {Pascal},
5430    contributer = {pabuhr@plg},
5431    author      = {Kathleen Jensen and Niklaus Wirth},
5432    title       = {{P}ascal User Manual and Report},
5433    publisher   = {Springer--Verlag},
5434    year        = 1975,
5435    edition     = {1st},
5436}
5437
5438@article{Turba85,
5439    keywords    = {Pascal, exception handling, inheritance},
5440    contributer = {pabuhr@plg},
5441    author      = {Thomas N. Turba},
5442    title       = {The {P}ascal Exception Handling Proposal},
5443    journal     = sigplan,
5444    volume      = 20,
5445    number      = 8,
5446    month       = aug,
5447    year        = 1985,
5448    pages       = {93-98},
5449}
5450
5451@manual{Pascal/VS,
5452    keywords    = {PL/I},
5453    contributer = {pabuhr@plg},
5454    key         = {IBM},
5455    title       = {{P}ascal/{VS} Language Reference Manual},
5456    organization= {International Business Machines},
5457    edition     = {1st},
5458    year        = 1981,
5459    note        = {Manual SH20-6168-1},
5460}
5461
5462@misc{perf,
5463    contributer = {pabuhr@plg},
5464    key         = {perf},
5465    author      = {perf},
5466    howpublished= {\href{https://perf.wiki.kernel.org/index.php/Tutorial}{https://\-perf.wiki.kernel.org/\-index.php/\-Tutorial}},
5467}
5468
5469@misc{Verch12,
5470    contributer = {pabuhr@plg},
5471    author      = {Shaun Verch},
5472    title       = {Performance Analysis of 64-Bit Capriccio},
5473    month       = may,
5474    year        = 2012,
5475    howpublished= {\href{http://cs.brown.edu/research/pubs/theses/masters/2012/verch.pdf}{http://cs.brown.edu/\-research/\-pubs/\-theses/\-masters/\-2012/\-verch.pdf}},
5476    optnote     = {Accessed: 2013-10-4}
5477}
5478
5479@article{Anderson90,
5480    keywords    = {spin locks, back off, performance},
5481    contributer = {pabuhr@plg},
5482    author      = {Thomas E. Anderson},
5483    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5484    journal     = ieeepds,
5485    month       = jan,
5486    year        = 1990,
5487    volume      = 1,
5488    number      = 1,
5489    pages       = {6-16},
5490}
5491
5492@inproceedings{Conchon07,
5493    keywords    = {persistent array, union-find},
5494    contributer = {a3moss@uwaterloo.ca},
5495    title       = {A persistent union-find data structure},
5496    author      = {Conchon, Sylvain and Filli{\^a}tre, Jean-Christophe},
5497    booktitle   = {Proceedings of the 2007 workshop on Workshop on ML},
5498    pages       = {37--46},
5499    year        = {2007},
5500    organization= {ACM}
5501}
5502
5503@article{poly,
5504    keywords    = {Poly, Standard ML, Russell, persistence},
5505    contributer = {gjditchfield@plg},
5506    author      = {David C. J. Matthews},
5507    title       = {Poly Manual},
5508    journal     = sigplan,
5509    month       = sep, year = 1985,
5510    volume      = 20, number = 9, pages = {52-76}
5511}
5512
5513@techreport{Atkinson87b,
5514    keywords    = {naming, persistence},
5515    contributer = {pabuhr@plg},
5516    author      = {M. P. Atkinson and R. Morrison},
5517    title       = {Polymorphic Names and Iterations},
5518    institution = {Universities of Glasgow and St. Andrews, Scotland},
5519    number      = {PPRR-53-87},
5520    month       = nov,
5521    year        = 1987,
5522}
5523
5524@book{Harland,
5525    keywords    = {},
5526    author      = {David M. Harland},
5527    title       = {Polymorphic Programming Languages: Design and Implementation},
5528    publisher   = {Ellis Horwood},
5529    year        = 1984,
5530    series      = {Computers and their Applications},
5531    address     = {Market Cross House, Cooper Street, Chichester, West Sussex, PO19 1EB, England},
5532    summary     = {
5533        The principles of Procedural Abstraction, Data Type Completeness,
5534        Declaration Correspondence, and Orthogonality are ruthlessly applied
5535        to the design of a polymorphic language.
5536    }
5537}
5538
5539@unpublished{poa,
5540    keywords    = {Force N, type inference, reusability, transcendance},
5541    contributer = {gjditchfield@plg},
5542    author      = {G. V. Cormack and A. K. Wright},
5543    title       = {Polymorphism, Overloading, and Abstraction},
5544    note        = {personal communication}
5545}
5546
5547@inproceedings{forceone:impl,
5548    keywords    = {Parametric polymorphism, ForceOne},
5549    contributer = {gjditchfield@plg},
5550    author      = {G. V. Cormack and A. K. Wright},
5551    title       = {Polymorphism in the Compiled Language {ForceOne}},
5552    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5553    month       = jan,
5554    year        = 1987,
5555    pages       = {284-292},
5556}
5557
5558@incollection{POOL-T,
5559    keywords    = {objects, concurrency},
5560    contributer = {pabuhr@plg},
5561    author      = {Pierre America},
5562    title       = {POOL-T: A Parallel Object-Oriented Language},
5563    booktitle   = {Object-Oriented Concurrent Programming},
5564    publisher   = {The MIT Press},
5565    year        = 1987,
5566    pages       = {199-220},
5567    editor      = {Akinori Yonezawa and Mario Tokoro}
5568}
5569
5570@article{Hardgrave76,
5571    keywords    = {positional, keyword, parameters, arguments},
5572    contributer = {pabuhr@plg},
5573    author      = {W. T. Hardgrave},
5574    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
5575    journal     = sigplan,
5576    volume      = 11,
5577    number      = 5,
5578    month       = may,
5579    year        = 1976,
5580    pages       = {52-58},
5581}
5582
5583@inproceedings{Rafkind09,
5584    keywords    = {accurate, C programming language, conservative, garbage collection, precise},
5585    contributer = {pabuhr@plg},
5586    author      = {Rafkind, Jon and Wick, Adam and Regehr, John and Flatt, Matthew},
5587    title       = {Precise Garbage Collection for C},
5588    booktitle   = {Proceedings of the 2009 International Symposium on Memory Management},
5589    series      = {ISMM '09},
5590    year        = {2009},
5591    location    = {Dublin, Ireland},
5592    pages       = {39-48},
5593    publisher   = {ACM},
5594    address     = {New York, NY, USA},
5595}
5596
5597@article{Ada:preliminary,
5598    keywords    = {Ada},
5599    contributer = {pabuhr@plg},
5600    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5601                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5602                   and John G. P. Barnes and Olivier Roubine},
5603    title       = {Preliminary {Ada} Reference Manual},
5604    journal     = sigplan,
5605    volume      = 14,
5606    number      = 6,
5607    month       = jun,
5608    year        = 1979,
5609    note        = {Part A},
5610}
5611
5612@techreport{Forsythe,
5613    author      = {John C. Reynolds},
5614    title       = {Preliminary Design of the Programming Language {Forsythe}},
5615    institution = {Carnegie Mellon University},
5616    number      = {CMU-CS-88-159},
5617    month       = jun,
5618    year        = 1988,
5619}
5620
5621@article{PRESTO,
5622    keywords    = {concurrency, threads},
5623    contributer = {dgharriss@plg},
5624    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5625    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
5626    journal     = spe,
5627    volume      = 18,
5628    number      = 8,
5629    month       = aug,
5630    year        = 1988,
5631    pages       = {713-732}
5632}
5633
5634@book{Ben-Ari82,
5635    keywords    = {concurrency, parallel, programming languages},
5636    contributer = {pabuhr@plg},
5637    author      = {Mordechai Ben-Ari},
5638    title       = {Principles of Concurrent Programming},
5639    publisher   = {Prentice-Hall International},
5640    address     = {Englewood Cliffs},
5641    year        = 1982,
5642}
5643
5644@book{Tennent81,
5645    author      = {R. D. Tennent},
5646    title       = {Principles of Programming Languages},
5647    publisher   = {Prentice-Hall International},
5648    address     = {Englewood Cliffs},
5649    year        = 1981,
5650    series      = {Series in Computer Science}
5651}
5652
5653@article{Lister77,
5654    keywords    = {monitors, nested monitor calls},
5655    contributer = {pabuhr@plg},
5656    author      = {Andrew Lister},
5657    title       = {The Problem of Nested Monitor Calls},
5658    journal     = osr,
5659    volume      = 11,
5660    number      = 3,
5661    month       = jul,
5662    year        = 1977,
5663    pages       = {5-7},
5664}
5665
5666@article{psa:persistence,
5667    keywords    = {persistence, first-class procedures, closure, PS-Algol, Abstract Data Types},
5668    contributer = {gjditchfield@plg},
5669    author      = {Malcolm P. Atkinson and Ronald Morrison},
5670    title       = {Procedures as Persistent Data Objects},
5671    journal     = toplas,
5672    volume      = {7},    number = {4},
5673    pages       = {539-559},
5674    month       = oct, year = 1985,
5675    comment     = {
5676        PS-Algol has ``structures'', accessible only through ``pntrs''.
5677        Pntrs can refer to any type of structure.  Field references involve
5678        a run-time check.  This, plus first-class procedures, can simulate
5679        abstract data types.  Procedure variables operating on pntrs
5680        simulate ADT operations.  A block defines a structure to implement
5681        the ADT, and assigns procedures to the variables.  Functions
5682        returning structures containing procedures  simulate multiple
5683        implementations and parameterized ADTs.
5684
5685        An outer procedure that returns a procedure that contains
5686        (non-local) references to the outer procedure's parameters
5687        implements partial evaluation.
5688
5689        Modules can be simulated like ADT's.  The module itself is a
5690        structure instance that is placed in persistent storage, and the
5691        module is imported by fetching it from the persistent store.
5692        Multiple instances of modules are easy.  Installation of new
5693        versions can be done by replacing the version in the database.
5694    }
5695}
5696
5697@article{Procol89,
5698    keywords    = {active objects, object-oriented languages, object-based languages, explicit per-object protocol},
5699    contributer = {akgoel@plg},
5700    author      = {Jan van den Bos and Chris Laffra},
5701    title       = {PROCOL: A Parallel Object Language with Protocols},
5702    journal     = sigplan,
5703    volume      = 24,
5704    number      = 10,
5705    month       = oct,
5706    year        = 1989,
5707    pages       = {95-102},
5708    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5709    abstract    = {},
5710}
5711
5712@inproceedings{Buhr98,
5713    keywords    = {profiling, monitoring, visualization},
5714    contributer = {pabuhr@plg},
5715    author      = {Peter A. Buhr and Robert Denda},
5716    title       = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
5717    booktitle   = {Proc. of 2nd Inter. Symp. on Computing in Object-Oriented Parallel Environments},
5718    series      = {Lecture Notes in Computer Science},
5719    publisher   = {Springer-Verlag},
5720    volume      = 1505,
5721    opteditor   = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
5722    address     = {Santa Fe, New Mexico, U.S.A.},
5723    month       = dec,
5724    year        = 1998,
5725    pages       = {159-166},
5726}
5727
5728@book{PowerPC,
5729    key         = {PowerPC processor},
5730    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5731    publisher   = {Freescale Semiconductor},
5732    volume      = {MPCFPE32B},
5733    edition     = {Rev. 3},
5734    month       = 9,
5735    year        = 2005,
5736}
5737
5738@book{Butenhof97,
5739    keywords    = {PThreads, concurrency},
5740    contributer = {pabuhr@plg},
5741    author      = {David R. Butenhof},
5742    title       = {Programming with {POSIX} Threads},
5743    publisher   = {Addison-Wesley},
5744    address     = {Boston},
5745    series      = {Professional Computing},
5746    year        = 1997,
5747}
5748
5749@book{SETL,
5750    keywords    = {SETL},
5751    contributer = {pabuhr@plg},
5752    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5753    title       = {Programming with Sets: An Introduction to {SETL}},
5754    publisher   = {Springer},
5755    address     = {New York, NY, USA},
5756    year        = 1986,
5757}
5758
5759@book{Genuys68,
5760    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
5761    contributer = {pabuhr@plg},
5762    editor      = {F. Genuys},
5763    title       = {Programming Languages},
5764    publisher   = {Academic Press},
5765    address     = {London, New York},
5766    year        = 1968,
5767    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5768}
5769
5770@manual{ANSI99:C,
5771    keywords    = {ANSI C 99},
5772    contributer = {pabuhr@plg},
5773    title       = {Programming Languages -- {C}},
5774    organization= {International Standard ISO/IEC 9899:1999 (E)},
5775    publisher   = {American National Standards Institute},
5776    address     = {www.ansi.org},
5777    year        = 1999,
5778}
5779
5780@manual{ANSI98:C++,
5781    keywords    = {ANSI C++ 98},
5782    contributer = {pabuhr@plg},
5783    key         = {C++98},
5784    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},
5785    edition     = {1st},
5786    publisher   = {International Standard Organization},
5787    address     = {\href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},
5788    year        = 1998,
5789}
5790
5791@manual{C++14,
5792    keywords    = {ISO/IEC C++ 14},
5793    contributer = {pabuhr@plg},
5794    key         = {C++14},
5795    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2014},
5796    edition     = {4th},
5797    publisher   = {International Standard Organization},
5798    address     = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5799    year        = 2014,
5800}
5801
5802@manual{MS:VisualC++,
5803    keywords    = {Microsoft Visual C++},
5804    contributer = {pabuhr@plg},
5805    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5806    organization= {Microsoft Corporation},
5807    year        = 2002,
5808    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
5809}
5810
5811@article{HasselBring00,
5812    keywords    = {concurrency, prototyping},
5813    contributer = {pabuhr@plg},
5814    author      = {Wilhelm Hasselbring},
5815    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
5816    journal     = acmcs,
5817    volume      = 32,
5818    number      = 1,
5819    month       = mar,
5820    year        = 2000,
5821    pages       = {43-79},
5822}
5823
5824@article{LLgen,
5825    keywords    = {ll(1), parser generator, separate compilation},
5826    contributer = {gjditchfield@plg},
5827    author      = {Dick Grune and Ceriel J. J. Jacobs},
5828    title       = {A Programmer-friendly LL(1) Parser Generator},
5829    journal     = spe,
5830    month       = jan, year = 1988,
5831    volume      = 18, number = 1, pages = {29-33},
5832    comment     = {
5833        LLgen generates C-language recursive-descent parsers.  The input
5834        contains procedure-like rules with alternation and repetition
5835        constructs on the right, and (typed) parameters on the left.
5836        C actions are specified between items in the right side.
5837        Alternation and repetition (reduce and shift) conflicts can be
5838        resolved statically or at run time.
5839
5840        A grammar can be specified in several files.  All files must be
5841        submitted to LLgen at once, but if the C file generated is no
5842        different from the old version, then the old version is not
5843        replaced and hence need not be recompiled, which saves lots of
5844        time.
5845
5846        When an incorrect token is found, the automatic error recovery
5847        algorithm discards tokens until an ``acceptable'' token is found;
5848        if the acceptable token is not correct, a correct one is inserted.
5849    }
5850}
5851
5852@techreport{russell,
5853    keywords    = {Russell},
5854    contributer = {gjditchfield@plg},
5855    author      = {H. Boehm and A. Demers and J. Donahue},
5856    title       = {A Programmer's Introduction to Russell},
5857    institution = {Rice University},
5858    year        = 1985,
5859    number      = {85-16}
5860}
5861
5862@techreport{PDM89,
5863    keywords    = {existential types, universal types},
5864    contributer = {gjditchfield@plg},
5865    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5866    title       = {Programming in Higher-Order Typed Lambda Calculi},
5867    institution = {School of Computer Science, Carnegie Mellon University},
5868    year        = 1989,
5869    address     = {Pittsburg, PA 15213-3890},
5870    month       = mar, number = {CMU-CS-89-111},
5871    abstract    = {
5872        This tutorial presents a hierarchy of increasingly powerful
5873        languages, beginning with Church's simply typed
5874        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5875        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5876        fragment of Girard's \(\omega\)-order polymorphic
5877        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
5878        the unusual style of programming that arises in these languages,
5879        where all functions are total and the primary control construct is
5880        iteration rather than general recursion.
5881    }
5882}
5883
5884@book{Modula-2,
5885    keywords    = {modules, coroutines},
5886    contributer = {pabuhr},
5887    author      = {Niklaus Wirth},
5888    title       = {Programming in Modula-2},
5889    publisher   = {Springer},
5890    address     = {New York},
5891    year        = 1988,
5892    edition     = {4th},
5893    series      = {Texts and Monographs in Computer Science},
5894}
5895
5896@manual{Ada,
5897    keywords    = {Ada, packages, tasks, exceptions},
5898    contributer = {pabuhr@plg},
5899    title       = {The Programming Language {Ada}: Reference Manual},
5900    author      = {Ada},
5901    organization= {United States Department of Defense},
5902    edition     = {{ANSI/MIL-STD-1815A-1983}},
5903    month       = feb,
5904    year        = 1983,
5905    note        = {Springer, New York},
5906}
5907
5908@manual{ada:old,
5909    keywords    = {Ada, packages, tasks, exceptions},
5910    contributer = {gjditchfield@plg},
5911    title       = {The Programming Language {Ada}: Reference Manual},
5912    organization= {United States Department of Defense},
5913    publisher   = {Springer},
5914    year        = 1981
5915}
5916
5917@book{Ghezzi,
5918    keywords    = {},
5919    author      = {Carlo Ghezzi and Mehdi Jazayeri},
5920    title       = {Programming Language Concepts},
5921    publisher   = {Wiley},
5922    year        = 1982
5923}
5924
5925@article{ConcurrentPascal,
5926    keywords    = {Concurrent Pascal},
5927    contributer = {pabuhr@plg},
5928    author      = {Per {Brinch Hansen}},
5929    title       = {The Programming Language Concurrent Pascal},
5930    journal     = ieeese,
5931    volume      = 2,
5932    month       = jun,
5933    year        = 1975,
5934    pages       = {199-206}
5935}
5936
5937@phdthesis{Buhr85:thesis,
5938    keywords    = {},
5939    contributer = {pabuhr@plg},
5940    author      = {P. A. Buhr},
5941    title       = {A Programming System},
5942    school      = {University of Manitoba},
5943    year        = {1985}
5944}
5945
5946@techreport{pierce91,
5947    keywords    = {typed lambda calculus}