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

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

add Checked C citation to bibliography file

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