source: doc/bibliography/pl.bib@ 1c35c78

ADT arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum stuck-waitfor-destruct
Last change on this file since 1c35c78 was 1c35c78, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

add Ritchie C history paper

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