source: doc/bibliography/pl.bib@ d065ded

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since d065ded was d065ded, checked in by Aaron Moss <a3moss@…>, 7 years ago

thesis: polish Ch.6 to first draft

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