source: doc/bibliography/pl.bib@ 9e6955d

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 9e6955d was ca0f061f, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

second introduction update

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