source: doc/bibliography/pl.bib@ a786586

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

thesis: fix URL line breaks in References

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