source: doc/bibliography/cfa.bib @ 3895b8b5

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 3895b8b5 was 3895b8b5, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

initial work on evaluatoin and related polymorphic work

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