source: doc/bibliography/pl.bib@ f8de4e4

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr persistent-indexer pthread-emulation qualifiedEnum
Last change on this file since f8de4e4 was 45af7e1, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

start rewrite of concurrency paper for SPE

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