source: doc/bibliography/pl.bib @ 8adcfee

aaron-thesisarm-ehcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-expr
Last change on this file since 8adcfee was 8adcfee, checked in by Aaron Moss <a3moss@…>, 3 years ago

thesis: first draft of conclusion

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