source: doc/bibliography/pl.bib@ 247c8f3

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 247c8f3 was 247c8f3, checked in by Aaron Moss <a3moss@…>, 7 years ago

Fixed link in Clang citation

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