source: doc/bibliography/pl.bib@ aac99da

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

formatting

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