source: doc/bibliography/pl.bib @ 1c35c78

ADTarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 1c35c78 was 1c35c78, checked in by Peter A. Buhr <pabuhr@…>, 5 years ago

add Ritchie C history paper

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