source: doc/bibliography/pl.bib@ afd550c

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

referee responses

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