source: doc/bibliography/pl.bib@ 58732d1

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 58732d1 was 8adcfee, checked in by Aaron Moss <a3moss@…>, 7 years ago

thesis: first draft of conclusion

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