source: doc/bibliography/pl.bib @ 3d60c08

ADTaaron-thesisarm-ehcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumwith_gc
Last change on this file since 3d60c08 was cfc3e0f, checked in by Peter A. Buhr <pabuhr@…>, 5 years ago

referee responses

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