Changes in / [753f13c9:720a007]
- Location:
- doc
- Files:
-
- 117 deleted
- 4 edited
-
bibliography/pl.bib (modified) (25 diffs)
-
papers/general/.gitignore (modified) (1 diff)
-
papers/general/AMA/AMA-stix.zip (deleted)
-
papers/general/AMA/AMA-stix/Documents/.log (deleted)
-
papers/general/AMA/AMA-stix/Documents/README.txt (deleted)
-
papers/general/AMA/AMA-stix/Documents/wileyNJD-Doc.tex (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/STIXGeneral-Bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/STIXGeneral-BoldItalic.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/STIXGeneral-Italic.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/STIXGeneral-Regular.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/Windows-Stix-fontinstaller.exe (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/a_axxd65.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls1stix.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls1stixbb.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls1stixfrak.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls1stixscr.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls1stixsf.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls2stix.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls2stixcal.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls2stixex.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ls2stixtt.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ly1sti.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneral-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneral-bolditalic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneral-italic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneral.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneralsc-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneralsc-bold.vf (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneralsc.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1-stixgeneralsc.vf (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot1stix.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneral-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneral-bolditalic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneral-italic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneral.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneralsc-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneralsc-bold.vf (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneralsc.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2-stixgeneralsc.vf (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ot2stix.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-extra1.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-extra1.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-extra2.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-extra2.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-extra3.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-extra3.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbb-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbb-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbb.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbb.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbbit-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbbit-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbbit.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathbbit.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathcal-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathcal-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathcal.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathcal.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathex-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathex-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathex.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathex.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathfrak-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathfrak-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathfrak.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathfrak.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathit-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathit-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathit.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathit.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathrm-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathrm-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathrm.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathrm.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathscr-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathscr-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathscr.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathscr.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsf-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsf-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsf.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsf.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsfit-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsfit-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsfit.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathsfit.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathtt-bold.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathtt-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathtt.pfb (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-mathtt.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-ot1.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-ot2.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-t1.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix-ts1.enc (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix.dtx (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix.fdd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix.map (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/stix.sty (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneral-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneral-bolditalic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneral-italic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneral.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneralsc-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneralsc-bold.vf (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneralsc.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1-stixgeneralsc.vf (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/t1stix.fd (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ts1-stixgeneral-bold.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ts1-stixgeneral-bolditalic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ts1-stixgeneral-italic.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ts1-stixgeneral.tfm (deleted)
-
papers/general/AMA/AMA-stix/Stix-fonts/ts1stix.fd (deleted)
-
papers/general/AMA/AMA-stix/ama/NJDnatbib.sty (deleted)
-
papers/general/AMA/AMA-stix/ama/WileyNJD-AMA.bst (deleted)
-
papers/general/AMA/AMA-stix/ama/WileyNJD-v2.cls (deleted)
-
papers/general/AMA/AMA-stix/ama/empty.eps (deleted)
-
papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bbl (deleted)
-
papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.bib (deleted)
-
papers/general/AMA/AMA-stix/ama/wileyNJD-AMA.tex (deleted)
-
papers/general/Makefile (modified) (4 diffs)
-
papers/general/Paper.tex (modified) (62 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/bibliography/pl.bib
r753f13c9 r720a007 780 780 title = {Boost Coroutine Library}, 781 781 year = 2015, 782 howpublished= {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html} 783 {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}}}, 784 note = {Accessed: 2016-09}, 782 note = {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html} 783 {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}} [Accessed September 2016]}, 785 784 } 786 785 … … 866 865 keywords = {ISO/IEC C 11}, 867 866 contributer = {pabuhr@plg}, 868 key= {C11},869 title = { C Programming Language{ISO/IEC} 9889:2011-12},867 author = {C11}, 868 title = {Programming Languages -- {C} {ISO/IEC} 9889:2011-12}, 870 869 edition = {3rd}, 871 870 publisher = {International Standard Organization}, … … 874 873 } 875 874 876 @manual{C++Concepts, 875 @techreport{C++Concepts, 876 type = {International Standard}, 877 877 keywords = {ISO/IEC TS 19217:2015}, 878 878 contributer = {a3moss@uwaterloo.ca}, 879 879 key = {Concepts}, 880 title = { {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming language --Extensions for concepts {ISO/IEC} {TS} 19217:2015},880 title = {Information technology -- Programming languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Extensions for concepts {ISO/IEC} {TS} 19217:2015}, 881 881 publisher = {International Standard Organization}, 882 882 address = {\href{https://www.iso.org/standard/64031.html}{https://\-www.iso.org/\-standard/\-64031.html}}, 883 year = 2015 ,883 year = 2015 884 884 } 885 885 … … 1020 1020 year = 1985, 1021 1021 pages = {14-22} 1022 }1023 1024 @inproceedings{Necula02,1025 author = {Necula, George C. and McPeak, Scott and Weimer, Westley},1026 title = {{CCured}: Type-safe Retrofitting of Legacy Code},1027 booktitle = {Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},1028 series = {POPL '02},1029 year = {2002},1030 location = {Portland, Oregon},1031 pages = {128-139},1032 publisher = {ACM},1033 address = {New York, NY, USA},1034 1022 } 1035 1023 … … 1117 1105 title = {Programming Languages -- {Cobol} ISO/IEC 1989:2014}, 1118 1106 edition = {2nd}, 1119 institution = {International Standard Organization},1107 institution = {International Standard Organization}, 1120 1108 address = {\href{https://www.iso.org/standard/51416.html}{https://\-www.iso.org/\-standard/\-51416.html}}, 1121 1109 year = 2014, … … 1129 1117 journal = sigplan, 1130 1118 year = 1984, 1131 month = jun, 1132 volume = 19, 1133 number = 6, 1134 pages = {1-12}, 1119 month = jun, volume = 19, number = 6, pages = {1-12}, 1135 1120 note = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction}, 1136 1121 abstract = { … … 2004 1989 2005 1990 @book{Stroustrup94, 2006 keywords = {C++},2007 contributor = {wyrmok@plg},2008 author = {Bjarne Stroustrup},2009 title = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},2010 publisher = {Addison-Wesley},1991 keywords = {C++}, 1992 contributor = {wyrmok@plg}, 1993 author = {Bjarne Stroustrup}, 1994 title = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}}, 1995 publisher = {Addison-Wesley}, 2011 1996 address = {Boston}, 2012 year = 19941997 year = 1994 2013 1998 } 2014 1999 … … 2753 2738 } 2754 2739 2755 @ misc{GCCExtensions,2740 @online{GCCExtensions, 2756 2741 contributer = {a3moss@uwaterloo.ca}, 2757 2742 key = {{GNU}}, … … 2759 2744 title = {Extensions to the {C} Language Family}, 2760 2745 year = 2014, 2761 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}},2762 note = {Accessed: 2017-04-02},2746 note = {\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}}, 2747 urldate = {2017-04-02} 2763 2748 } 2764 2749 … … 3098 3083 keywords = {GMP arbitrary-precision library}, 3099 3084 contributer = {pabuhr@plg}, 3100 key = {GMP},3101 3085 title = {{GNU} Multiple Precision Arithmetic Library}, 3102 address = {GNU}, 3086 author = {GMP}, 3087 organization= {GNU}, 3103 3088 year = 2016, 3104 3089 note = {\href{https://gmplib.org}{https://\-gmplib.org}}, … … 3129 3114 } 3130 3115 3131 @ misc{GObject,3116 @online{GObject, 3132 3117 keywords = {GObject}, 3133 3118 contributor = {a3moss@uwaterloo.ca}, 3134 key = {GObject},3135 organization= {The {GNOME}Project},3136 title = {{GO }bjectReference Manual},3119 author = {{GObject}}, 3120 organization= {The GNOME Project}, 3121 title = {{GObject} Reference Manual}, 3137 3122 year = 2014, 3138 howpublished= {https://developer.gnome.org/gobject/stable/},3139 note = {Accessed: 2017-04},3123 url = {https://developer.gnome.org/gobject/stable/}, 3124 urldate = {2017-04-04} 3140 3125 } 3141 3126 … … 3662 3647 3663 3648 @inproceedings{Pharr12, 3664 title = {ispc: A {SPMD} compiler for high-performance CPU programming}, 3665 author = {Pharr, Matt and Mark, William R}, 3666 booktitle = {Innovative Parallel Computing (InPar), 2012}, 3667 pages = {1--13}, 3668 year = {2012}, 3669 month = may, 3670 address = {San Jose, CA, USA}, 3671 publisher = {IEEE}, 3672 } 3673 3674 @inproceedings{DeLozier13, 3675 keywords = {C++, local pointers, memory safety, type-safety}, 3676 author = {DeLozier, Christian and Eisenberg, Richard and Nagarakatte, Santosh and Osera, Peter-Michael and Martin, Milo M.K. and Zdancewic, Steve}, 3677 title = {{I}ronclad {C++}: A Library-augmented Type-safe Subset of {C++}}, 3678 booktitle = {Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages \& Applications}, 3679 series = {OOPSLA'13}, 3680 year = {2013}, 3681 address = {Indianapolis, Indiana, USA}, 3682 pages = {287-304}, 3683 publisher = {ACM}, 3649 title={ispc: A SPMD compiler for high-performance CPU programming}, 3650 author={Pharr, Matt and Mark, William R}, 3651 booktitle={Innovative Parallel Computing (InPar), 2012}, 3652 pages={1--13}, 3653 year={2012}, 3654 organization={IEEE} 3684 3655 } 3685 3656 … … 3725 3696 3726 3697 @book{Java, 3727 keywords = {Java},3728 contributer = {pabuhr@plg}, 3729 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},3730 title = {The {Java} Language Specification},3698 keywords = {Java}, 3699 contributer = {pabuhr@plg}, 3700 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha}, 3701 title = {The {Java} Language Specification}, 3731 3702 publisher = {Addison-Wesley}, 3732 3703 address = {Reading}, 3733 year = 2000,3704 year = 2000, 3734 3705 edition = {2nd}, 3735 3706 } 3736 3707 3737 3708 @manual{Java8, 3738 keywords = {Java SE 8},3739 contributer = {pabuhr@plg}, 3740 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},3741 title = {{Java} Language Specification},3709 keywords = {Java SE 8}, 3710 contributer = {pabuhr@plg}, 3711 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley}, 3712 title = {{Java} Language Specification}, 3742 3713 publisher = {Oracle}, 3743 year = 2015,3744 edition = { {J}ava {SE}8},3714 year = 2015, 3715 edition = {Java SE 8}, 3745 3716 } 3746 3717 … … 4677 4648 } 4678 4649 4679 @m isc{obj-c-book,4650 @manual{obj-c-book, 4680 4651 keywords = {objective-c}, 4681 4652 contributor = {a3moss@uwaterloo.ca}, 4682 key = {Objective-C}, 4683 title = {Objective-C}, 4684 publisher = {Apple Inc.}, 4685 year = 2015, 4686 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}}, 4687 note = {Accessed: 2018-03} 4688 } 4689 4690 @misc{xcode7, 4653 author = {{Objective-C}}, 4654 title = {The {Objective-C} Programming Language}, 4655 organization= {Apple Computer Inc.}, 4656 address = {Cupertino, CA}, 4657 year = 2003 4658 } 4659 4660 @online{xcode7, 4691 4661 keywords = {objective-c}, 4692 4662 contributor = {a3moss@uwaterloo.ca}, 4693 key = {Xcode},4694 title = {{X }code7 Release Notes},4663 author = {{Xcode}}, 4664 title = {{Xcode} 7 Release Notes}, 4695 4665 year = 2015, 4696 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}},4697 note = {Accessed: 2017-04}4666 note = {\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}}, 4667 urldate = {2017-04-04} 4698 4668 } 4699 4669 … … 5472 5442 contributer = {pabuhr@plg}, 5473 5443 key = {C++98}, 5474 title = { {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},5475 edition = {1st},5476 publisher = { International Standard Organization},5477 address = { \href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},5444 title = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}}, 5445 organization= {International Standard ISO/IEC 14882:1998 (E)}, 5446 publisher = {American National Standards Institute}, 5447 address = {www.ansi.org}, 5478 5448 year = 1998, 5479 5449 } … … 5482 5452 keywords = {ISO/IEC C++ 14}, 5483 5453 contributer = {pabuhr@plg}, 5484 key= {C++14},5485 title = { {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming LanguageISO/IEC 14882:2014},5454 author = {C++14}, 5455 title = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} ISO/IEC 14882:2014}, 5486 5456 edition = {4th}, 5487 5457 publisher = {International Standard Organization}, … … 6006 5976 keywords = {Rust programming language}, 6007 5977 contributer = {pabuhr@plg}, 6008 key = {Rust},6009 title = {The {R }ustProgramming Language},6010 address= {The Rust Project Developers},5978 author = {{Rust}}, 5979 title = {The {Rust} Programming Language}, 5980 organization= {The Rust Project Developers}, 6011 5981 year = 2015, 6012 5982 note = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}}, … … 6018 5988 keywords = {Scala programming language}, 6019 5989 contributer = {pabuhr@plg}, 6020 key = {Scala},6021 title = {{S }calaLanguage Specification, Version 2.11},6022 address= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},5990 author = {{Scala}}, 5991 title = {{Scala} Language Specification, Version 2.11}, 5992 organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne}, 6023 5993 year = 2016, 6024 5994 note = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}}, … … 6119 6089 author = {Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian}, 6120 6090 booktitle = {Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing}, 6121 pages = {17- 24},6091 pages = {17--24}, 6122 6092 year = {2014}, 6123 6093 organization= {ACM} … … 6365 6335 keywords = {Polymorphic C}, 6366 6336 contributor = {a3moss@uwaterloo.ca}, 6367 title = {A sound polymorphic type system for a dialect of {C}},6337 title = {A sound polymorphic type system for a dialect of C}, 6368 6338 author = {Smith, Geoffrey and Volpano, Dennis}, 6369 6339 journal = {Science of computer programming}, … … 6473 6443 } 6474 6444 6475 @ misc{Sutter15,6445 @online{Sutter15, 6476 6446 contributer = {pabuhr@plg}, 6477 6447 author = {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis}, … … 6480 6450 month = oct, 6481 6451 year = 2015, 6482 pages = {1- 6},6452 pages = {1--6}, 6483 6453 numpages = {6}, 6484 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}},6454 note = {\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}}, 6485 6455 } 6486 6456 … … 6756 6726 } 6757 6727 6758 @misc{TIOBE, 6759 contributer = {pabuhr@plg}, 6760 key = {TIOBE Index}, 6761 title = {{TIOBE} Index}, 6762 howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}}, 6763 note = {Accessed: 2018-09}, 6728 @online{TIOBE, 6729 contributer = {pabuhr@plg}, 6730 author = {{TIOBE Index}}, 6731 year = {February 2018}, 6732 url = {http://www.tiobe.com/tiobe_index}, 6764 6733 } 6765 6734 … … 6772 6741 month = sep, 6773 6742 year = 1990, 6743 note = {} 6774 6744 } 6775 6745 … … 7078 7048 } 7079 7049 7080 @ misc{Vala,7050 @online{Vala, 7081 7051 keywords = {GObject, Vala}, 7082 7052 contributor = {a3moss@uwaterloo.ca}, 7083 key = {Vala},7084 organization= {The {GNOME}Project},7085 title = { {V}ala Reference Manual},7053 author = {{Vala}}, 7054 organization= {The GNOME Project}, 7055 title = {Vala Reference Manual}, 7086 7056 year = 2017, 7087 howpublished= {\url{https://wiki.gnome.org/Projects/Vala/Manual}},7088 note = {Accessed: 2017-04}7057 url = {https://wiki.gnome.org/Projects/Vala/Manual}, 7058 urldate = {2017-04-04} 7089 7059 } 7090 7060 -
doc/papers/general/.gitignore
r753f13c9 r720a007 3 3 *.pdf 4 4 *.ps 5 6 Paper.tex.plain7 mail8 Paper.out.ps9 WileyNJD-AMA.bst -
doc/papers/general/Makefile
r753f13c9 r720a007 3 3 Build = build 4 4 Figures = figures 5 Macros = AMA/AMA-stix/ama5 Macros = ../../LaTeXmacros 6 6 TeXLIB = .:${Macros}:${Build}:../../bibliography: 7 7 LaTeX = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error -output-directory=${Build} 8 8 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex 9 9 10 MAKEFLAGS = --no-print-directory # --silent10 MAKEFLAGS = --no-print-directory --silent # 11 11 VPATH = ${Build} ${Figures} evaluation 12 12 … … 34 34 35 35 DOCUMENT = Paper.pdf 36 BASE = ${basename ${DOCUMENT}}37 36 38 37 # Directives # … … 43 42 44 43 clean : 45 @rm -frv ${DOCUMENT} ${ BASE}.ps WileyNJD-AMA.bst ${BASE}.out.ps ${Build}44 @rm -frv ${DOCUMENT} ${basename ${DOCUMENT}}.ps ${Build} 46 45 47 46 # File Dependencies # 48 47 49 ${DOCUMENT} : ${ BASE}.ps48 ${DOCUMENT} : ${basename ${DOCUMENT}}.ps 50 49 ps2pdf $< 51 50 52 ${ BASE}.ps : ${BASE}.dvi51 ${basename ${DOCUMENT}}.ps : ${basename ${DOCUMENT}}.dvi 53 52 dvips ${Build}/$< -o $@ 54 53 55 ${ BASE}.dvi : Makefile ${Build} ${BASE}.out.ps WileyNJD-AMA.bst${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \56 ../../bibliography/pl.bib54 ${basename ${DOCUMENT}}.dvi : Makefile ${Build} ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} \ 55 ${Macros}/common.tex ${Macros}/indexstyle ../../bibliography/pl.bib 57 56 # Must have *.aux file containing citations for bibtex 58 57 if [ ! -r ${basename $@}.aux ] ; then ${LaTeX} ${basename $@}.tex ; fi 59 ${BibTeX} ${Build}/${basename $@}58 -${BibTeX} ${Build}/${basename $@} 60 59 # Some citations reference others so run again to resolve these citations 61 60 ${LaTeX} ${basename $@}.tex 62 ${BibTeX} ${Build}/${basename $@}61 -${BibTeX} ${Build}/${basename $@} 63 62 # Run again to finish citations 64 63 ${LaTeX} ${basename $@}.tex … … 68 67 ${Build}: 69 68 mkdir -p ${Build} 70 71 ${BASE}.out.ps:72 ln -fs build/Paper.out.ps .73 74 WileyNJD-AMA.bst:75 ln -fs AMA/AMA-stix/ama/WileyNJD-AMA.bst .76 69 77 70 ${GRAPHS} : timing.gp timing.dat -
doc/papers/general/Paper.tex
r753f13c9 r720a007 1 \documentclass[AMA,STIX1COL]{WileyNJD-v2} 2 3 \articletype{RESEARCH ARTICLE}% 4 5 \received{26 April 2016} 6 \revised{6 June 2016} 7 \accepted{6 June 2016} 8 9 \raggedbottom 10 11 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 12 13 % Latex packages used in the document. 14 1 \documentclass{article} 2 3 \usepackage{fullpage} 15 4 \usepackage{epic,eepic} 16 \usepackage{xspace} 17 \usepackage{comment} 5 \usepackage{xspace,calc,comment} 18 6 \usepackage{upquote} % switch curled `'" to straight 19 7 \usepackage{listings} % format program code 20 %\usepackage{enumitem} 21 %\setlist[itemize]{topsep=3pt,itemsep=2pt,parsep=0pt}% global 22 %\usepackage{rotating} 23 24 \hypersetup{breaklinks=true} 25 \definecolor{ForestGreen}{cmyk}{1, 0, 0.99995, 0} 26 27 \usepackage[pagewise]{lineno} 28 \renewcommand{\linenumberfont}{\scriptsize\sffamily} 8 \usepackage{enumitem} 9 \setlist[itemize]{topsep=3pt,itemsep=2pt,parsep=0pt}% global 10 \usepackage[flushmargin]{footmisc} % support label/reference in footnote 11 \usepackage{rotating} 12 \usepackage[usenames]{color} 13 \usepackage{pslatex} % reduce size of san serif font 14 \usepackage[plainpages=false,pdfpagelabels,pdfpagemode=UseNone,pagebackref=true,breaklinks=true,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref} 15 \urlstyle{sf} 16 \usepackage{breakurl} 17 18 \setlength{\textheight}{9in} 19 %\oddsidemargin 0.0in 20 \renewcommand{\topfraction}{0.8} % float must be greater than X of the page before it is forced onto its own page 21 \renewcommand{\bottomfraction}{0.8} % float must be greater than X of the page before it is forced onto its own page 22 \renewcommand{\floatpagefraction}{0.8} % float must be greater than X of the page before it is forced onto its own page 23 \renewcommand{\textfraction}{0.0} % the entire page maybe devoted to floats with no text on the page at all 29 24 30 25 \lefthyphenmin=4 % hyphen only after 4 characters 31 26 \righthyphenmin=4 32 33 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%34 27 35 28 % Names used in the document. … … 71 64 \newlength{\gcolumnposn} % temporary hack because lstlisting does not handle tabs correctly 72 65 \newlength{\columnposn} 73 \setlength{\gcolumnposn}{ 3.5in}66 \setlength{\gcolumnposn}{2.75in} 74 67 \setlength{\columnposn}{\gcolumnposn} 75 68 \newcommand{\C}[2][\@empty]{\ifx#1\@empty\else\global\setlength{\columnposn}{#1}\global\columnposn=\columnposn\fi\hfill\makebox[\textwidth-\columnposn][l]{\lst@basicstyle{\LstCommentStyle{#2}}}} … … 104 97 }% 105 98 \newcommand{\ETAL}{\abbrevFont{et}~\abbrevFont{al}} 106 \ renewcommand*{\etal}{%99 \newcommand*{\etal}{% 107 100 \@ifnextchar{.}{\protect\ETAL}% 108 101 {\protect\ETAL.\xspace}% … … 152 145 belowskip=3pt, 153 146 % replace/adjust listing characters that look bad in sanserif 154 literate={-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.1ex}}}}1 {^}{\raisebox{0.6ex}{$\scripts tyle\land\,$}}1155 {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 % {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1156 {<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {->}{\makebox[1ex][c]{\raisebox{0. 5ex}{\rule{0.8ex}{0.075ex}}}\kern-0.2ex{\textgreater}}2,147 literate={-}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.1ex}}}}1 {^}{\raisebox{0.6ex}{$\scriptscriptstyle\land\,$}}1 148 {~}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}}1 {@}{\small{@}}1 {<}{\small{\textless}}1 {>}{\small{\textgreater}}1 % {`}{\ttfamily\upshape\hspace*{-0.1ex}`}1 149 {<-}{$\leftarrow$}2 {=>}{$\Rightarrow$}2 {->}{\makebox[1ex][c]{\raisebox{0.4ex}{\rule{0.8ex}{0.075ex}}}\kern-0.2ex{\small\textgreater}}2, 157 150 moredelim=**[is][\color{red}]{`}{`}, 158 151 }% lstset 152 153 % inline code @...@ 154 \lstMakeShortInline@% 159 155 160 156 \lstnewenvironment{cfa}[1][] … … 165 161 {} 166 162 167 % inline code @...@ 168 \lstMakeShortInline@% 169 170 171 \title{\texorpdfstring{\protect\CFA : Adding Modern Programming Language Features to C}{Cforall : Adding Modern Programming Language Features to C}} 172 173 \author[1]{Aaron Moss} 174 \author[1]{Robert Schluntz} 175 \author[1]{Peter A. Buhr*} 176 177 \address[1]{\orgdiv{David R. Cheriton School of Computer Science}, \orgname{University of Waterloo}, \orgaddress{\state{Ontario}, \country{Canada}}} 178 179 \corres{*Peter A. Buhr, \email{pabuhr{\char`\@}uwaterloo.ca}} 180 \presentaddress{David R. Cheriton School of Computer Science, University of Waterloo, Waterloo, ON, N2L 3G1, Canada} 181 182 183 \abstract[Summary]{ 163 164 \title{\protect\CFA : Adding Modern Programming Language Features to C} 165 166 \author{Aaron Moss, Robert Schluntz, Peter Buhr} 167 % \email{a3moss@uwaterloo.ca} 168 % \email{rschlunt@uwaterloo.ca} 169 % \email{pabuhr@uwaterloo.ca} 170 % \affiliation{% 171 % \institution{University of Waterloo} 172 % \department{David R. Cheriton School of Computer Science} 173 % \streetaddress{Davis Centre, University of Waterloo} 174 % \city{Waterloo} 175 % \state{ON} 176 % \postcode{N2L 3G1} 177 % \country{Canada} 178 % } 179 180 %\terms{generic, tuple, variadic, types} 181 %\keywords{generic types, tuple types, variadic types, polymorphic functions, C, Cforall} 182 183 \begin{document} 184 \maketitle 185 186 187 \begin{abstract} 184 188 The C programming language is a foundational technology for modern computing with millions of lines of code implementing everything from commercial operating-systems to hobby projects. 185 189 This installation base and the programmers producing it represent a massive software-engineering investment spanning decades and likely to continue for decades more. … … 191 195 This paper presents a quick tour of \CFA features showing how their design avoids shortcomings of similar features in C and other C-like languages. 192 196 Finally, experimental results are presented to validate several of the new features. 193 }% 194 195 \keywords{generic types, tuple types, variadic types, polymorphic functions, C, Cforall} 196 197 198 \begin{document} 199 \linenumbers % comment out to turn off line numbering 200 201 \maketitle 197 \end{abstract} 202 198 203 199 … … 234 230 \CFA is currently implemented as a source-to-source translator from \CFA to the gcc-dialect of C~\cite{GCCExtensions}, allowing it to leverage the portability and code optimizations provided by gcc, meeting goals (1)--(3). 235 231 Ultimately, a compiler is necessary for advanced features and optimal performance. 236 All features discussed in this paper are working, unless otherwise stated as under construction.232 All of the features discussed in this paper are working, unless a feature states it is a future feature for completion. 237 233 238 234 Finally, it is impossible to describe a programming language without usages before definitions. … … 262 258 263 259 \begin{cfa} 264 int max = 2147483647; $\C[4in]{// (1)}$260 int max = 2147483647; $\C[3.75in]{// (1)}$ 265 261 double max = 1.7976931348623157E+308; $\C{// (2)}$ 266 262 int max( int a, int b ) { return a < b ? b : a; } $\C{// (3)}$ 267 263 double max( double a, double b ) { return a < b ? b : a; } $\C{// (4)}\CRT$ 268 max( 7, -max ); $\C[2.75in]{// uses (3) and (1), by matching int from constant 7}$269 max( max, 3.14 ); $\C{// uses (4) and (2), by matching double from constant 3.14}$270 max( max, -max ); $\C{// ERROR: ambiguous}$271 int m = max( max, -max ); $\C{// uses (3) and (1) twice, by matching return type}\CRT$264 max( 7, -max ); $\C{// uses (3) and (1), by matching int from constant 7}$ 265 max( max, 3.14 ); $\C{// uses (4) and (2), by matching double from constant 3.14}$ 266 max( max, -max ); $\C{// ERROR: ambiguous}$ 267 int m = max( max, -max ); $\C{// uses (3) and (1) twice, by matching return type}$ 272 268 \end{cfa} 273 269 … … 296 292 \begin{cfa} 297 293 `forall( otype T )` T identity( T val ) { return val; } 298 int forty_two = identity( 42 ); $\C{// T is bound to int, forty\_two == 42}$294 int forty_two = identity( 42 ); $\C{// T is bound to int, forty\_two == 42}$ 299 295 \end{cfa} 300 296 This @identity@ function can be applied to any complete \newterm{object type} (or @otype@). … … 310 306 For example, the function @twice@ can be defined using the \CFA syntax for operator overloading: 311 307 \begin{cfa} 312 forall( otype T `| { T ?+?(T, T); }` ) T twice( T x ) { return x `+` x; } $\C{// ? denotes operands}$308 forall( otype T `| { T ?+?(T, T); }` ) T twice( T x ) { return x `+` x; } $\C{// ? denotes operands}$ 313 309 int val = twice( twice( 3.7 ) ); 314 310 \end{cfa} … … 329 325 } 330 326 double key = 5.0, vals[10] = { /* 10 sorted float values */ }; 331 double * val = (double *)bsearch( &key, vals, 10, sizeof(vals[0]), comp ); $\C{// search sorted array}$327 double * val = (double *)bsearch( &key, vals, 10, sizeof(vals[0]), comp ); $\C{// search sorted array}$ 332 328 \end{cfa} 333 329 which can be augmented simply with a generalized, type-safe, \CFA-overloaded wrappers: … … 339 335 forall( otype T | { int ?<?( T, T ); } ) unsigned int bsearch( T key, const T * arr, size_t size ) { 340 336 T * result = bsearch( key, arr, size ); $\C{// call first version}$ 341 return result ? result - arr : size; $\C{// pointer subtraction includes sizeof(T)}$342 } 343 double * val = bsearch( 5.0, vals, 10 ); $\C{// selection based on return type}$337 return result ? result - arr : size; $\C{// pointer subtraction includes sizeof(T)}$ 338 } 339 double * val = bsearch( 5.0, vals, 10 ); $\C{// selection based on return type}$ 344 340 int posn = bsearch( 5.0, vals, 10 ); 345 341 \end{cfa} … … 365 361 forall( otype T | { int ?<?( T, T ); } ) void qsort( const T * arr, size_t size ) { /* use C qsort */ } 366 362 { 367 int ?<?( double x, double y ) { return x `>` y; } $\C{// locally override behaviour}$363 int ?<?( double x, double y ) { return x `>` y; } $\C{// locally override behaviour}$ 368 364 qsort( vals, size ); $\C{// descending sort}$ 369 365 } … … 372 368 Hence, programmers can easily form local environments, adding and modifying appropriate functions, to maximize reuse of other existing functions and types. 373 369 374 Under construction is a mechanism to distribute @forall@ over routines/types, where each block declaration is prefixed with the initial @forall@ clause significantly reducing duplication (see @stack@ examples in Section~\ref{sec:eval}): 375 \begin{cfa} 376 forall( otype `T` ) { $\C{// forall block}$ 377 struct stack { stack_node(`T`) * head; }; $\C{// generic type}$ 378 void push( stack(`T`) & s, `T` value ) ... $\C{// generic operations}$ 379 T pop( stack(`T`) & s ) ... 380 } 381 \end{cfa} 370 Unconstruction is a mechanism to distribute @forall@ over related routines/types (see @stack@ examples in Section~\ref{sec:eval}): 371 \begin{cfa} 372 forall( otype T ) { $\C{// forall block}$ 373 struct stack { stack_node(T) * head; }; $\C{// generic type}$ 374 void push( stack(T) & s, T value ) ... $\C{// generic operations}$ 375 T pop( stack(T) & s ) ... 376 } 377 \end{cfa} 378 Each block declaration is prefixed with the initial @forall@ clause significantly reducing duplication. 382 379 383 380 … … 391 388 T ?+=?( T *, T ); 392 389 T ++?( T * ); 393 T ?++( T * ); 394 }; 390 T ?++( T * ); }; 391 395 392 forall( otype T `| summable( T )` ) T sum( T a[$\,$], size_t size ) { // use trait 396 393 `T` total = { `0` }; $\C{// instantiate T from 0 by calling its constructor}$ 397 394 for ( unsigned int i = 0; i < size; i += 1 ) total `+=` a[i]; $\C{// select appropriate +}$ 398 return total; 399 } 395 return total; } 400 396 \end{cfa} 401 397 … … 406 402 void ?{}( T &, T ); $\C{// copy constructor}$ 407 403 void ?=?( T &, T ); $\C{// assignment operator}$ 408 void ^?{}( T & ); $\C{// destructor}$ 409 }; 404 void ^?{}( T & ); }; $\C{// destructor}$ 410 405 \end{cfa} 411 406 Given the information provided for an @otype@, variables of polymorphic type can be treated as if they were a complete type: stack-allocatable, default or copy-initialized, assigned, and deleted. … … 659 654 p`->0` = 5; $\C{// change quotient}$ 660 655 bar( qr`.1`, qr ); $\C{// pass remainder and quotient/remainder}$ 661 rem = [div( 13, 5 ), 42]`.0.1`; $\C{// access 2nd component of 1st component }$656 rem = [div( 13, 5 ), 42]`.0.1`; $\C{// access 2nd component of 1st component of tuple expression}$ 662 657 \end{cfa} 663 658 … … 668 663 Tuple flattening recursively expands a tuple into the list of its basic components. 669 664 Tuple structuring packages a list of expressions into a value of tuple type, \eg: 665 %\lstDeleteShortInline@% 666 %\par\smallskip 667 %\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}} 670 668 \begin{cfa} 671 669 int f( int, int ); … … 674 672 [int, int] x; 675 673 int y; 676 f( x ); $\C{// flatten}$ 677 g( y, 10 ); $\C{// structure}$ 678 h( x, y ); $\C{// flatten and structure}$ 679 \end{cfa} 674 f( x ); $\C{// flatten}$ 675 g( y, 10 ); $\C{// structure}$ 676 h( x, y ); $\C{// flatten and structure}$ 677 \end{cfa} 678 %\end{cfa} 679 %& 680 %\begin{cfa} 681 %\end{tabular} 682 %\smallskip\par\noindent 683 %\lstMakeShortInline@% 680 684 In the call to @f@, @x@ is implicitly flattened so the components of @x@ are passed as the two arguments. 681 685 In the call to @g@, the values @y@ and @10@ are structured into a single argument of type @[int, int]@ to match the parameter type of @g@. … … 688 692 An assignment where the left side is a tuple type is called \newterm{tuple assignment}. 689 693 There are two kinds of tuple assignment depending on whether the right side of the assignment operator has a tuple type or a non-tuple type, called \newterm{multiple} and \newterm{mass assignment}, respectively. 694 %\lstDeleteShortInline@% 695 %\par\smallskip 696 %\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}} 690 697 \begin{cfa} 691 698 int x = 10; … … 697 704 [y, x] = 3.14; $\C{// mass assignment}$ 698 705 \end{cfa} 706 %\end{cfa} 707 %& 708 %\begin{cfa} 709 %\end{tabular} 710 %\smallskip\par\noindent 711 %\lstMakeShortInline@% 699 712 Both kinds of tuple assignment have parallel semantics, so that each value on the left and right side is evaluated before any assignments occur. 700 713 As a result, it is possible to swap the values in two variables without explicitly creating any temporary variables or calling a function, \eg, @[x, y] = [y, x]@. … … 720 733 Here, the mass assignment sets all members of @s@ to zero. 721 734 Since tuple-index expressions are a form of member-access expression, it is possible to use tuple-index expressions in conjunction with member tuple expressions to manually restructure a tuple (\eg rearrange, drop, and duplicate components). 735 %\lstDeleteShortInline@% 736 %\par\smallskip 737 %\begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}} 722 738 \begin{cfa} 723 739 [int, int, long, double] x; … … 727 743 [int, int, int] y = x.[2, 0, 2]; $\C{// duplicate: [y.0, y.1, y.2] = [x.2, x.0.x.2]}$ 728 744 \end{cfa} 745 %\end{cfa} 746 %& 747 %\begin{cfa} 748 %\end{tabular} 749 %\smallskip\par\noindent 750 %\lstMakeShortInline@% 729 751 It is also possible for a member access to contain other member accesses, \eg: 730 752 \begin{cfa} … … 1016 1038 \begin{cquote} 1017 1039 \lstDeleteShortInline@% 1018 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}1019 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\1040 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 1041 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1020 1042 \begin{cfa} 1021 1043 case 2, 10, 34, 42: … … 1031 1053 \begin{cquote} 1032 1054 \lstDeleteShortInline@% 1033 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}1034 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\1055 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 1056 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1035 1057 \begin{cfa} 1036 1058 case 2~42: … … 1048 1070 \end{cfa} 1049 1071 1050 C allows placement of @case@ clauses \emph{within} statements nested in the @switch@ body ( calledDuff's device~\cite{Duff83});1072 C allows placement of @case@ clauses \emph{within} statements nested in the @switch@ body (see Duff's device~\cite{Duff83}); 1051 1073 \begin{cfa} 1052 1074 switch ( i ) { … … 1059 1081 } 1060 1082 \end{cfa} 1061 \CFA precludes this form of transfer \emph{into}a control structure because it causes undefined behaviour, especially with respect to missed initialization, and provides very limited functionality.1083 \CFA precludes this form of transfer into a control structure because it causes undefined behaviour, especially with respect to missed initialization, and provides very limited functionality. 1062 1084 1063 1085 C allows placement of declaration within the @switch@ body and unreachable code at the start, resulting in undefined behaviour: … … 1124 1146 \end{figure} 1125 1147 1126 Finally, Figure~\ref{f:FallthroughStatement} shows @fallthrough@ may appear in contexts other than terminating a @case@ clause, and have an explicit transfer label allowing separate cases but common final-code for a set of cases. 1127 The target label must be below the @fallthrough@, \ie @fallthrough@ cannot form a loop, and the label may not be nested in a control structure, \ie it must be at the same level as the @case@ clauses; 1128 the target label may be case @default@. 1129 1130 \begin{figure} 1131 \centering 1148 Finally, @fallthrough@ may appear in contexts other than terminating a @case@ clause, and have an explicit transfer label allowing separate cases but common final-code for a set of cases: 1149 \begin{cquote} 1132 1150 \lstDeleteShortInline@% 1133 1151 \begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}} … … 1151 1169 case 4: 1152 1170 ... `fallthrough common;` 1153 common: // below fallthrough a t same level as case clauses1171 common: // below fallthrough and at same level as case clauses 1154 1172 ... // common code for cases 3 and 4 1155 1173 // implicit break … … 1158 1176 \end{tabular} 1159 1177 \lstMakeShortInline@% 1160 \ caption{\lstinline|fallthrough| Statement}1161 \label{f:FallthroughStatement} 1162 \end{figure} 1178 \end{cquote} 1179 The target label must be below the @fallthrough@, \ie @fallthrough@ cannot form a loop, and the label may not be nested in a control structure, \ie it must be at the same level as the @case@ clauses; 1180 the target label may be case @default@. 1163 1181 1164 1182 Collectively, these control-structure enhancements reduce programmer burden and increase readability and safety. … … 1292 1310 R r; 1293 1311 ... `resume( r );` ... 1294 ... r.fix // control returnshere after handler1312 ... r.fix // control does return here after handler 1295 1313 } 1296 1314 `try` { … … 1405 1423 1406 1424 1407 \subsection{\texorpdfstring{\protect\lstinline{with} Statement}{withStatement}}1408 \label{s:With Statement}1425 \subsection{\texorpdfstring{\protect\lstinline{with} Clause / Statement}{with Clause / Statement}} 1426 \label{s:WithClauseStatement} 1409 1427 1410 1428 Grouping heterogeneous data into \newterm{aggregate}s (structure/union) is a common programming practice, and an aggregate can be further organized into more complex structures, such as arrays and containers: … … 1426 1444 A similar situation occurs in object-oriented programming, \eg \CC: 1427 1445 \begin{C++} 1428 struct S{1446 class C { 1429 1447 char c; $\C{// fields}$ 1430 1448 int i; 1431 1449 double d; 1432 voidf() { $\C{// implicit ``this'' aggregate}$1450 int f() { $\C{// implicit ``this'' aggregate}$ 1433 1451 `this->`c; `this->`i; `this->`d; $\C{// access containing fields}$ 1434 1452 } 1435 1453 } 1436 1454 \end{C++} 1437 Object-oriented nesting of member functions in a \lstinline[language=C++]@class /struct@ allows eliding \lstinline[language=C++]@this->@ because of lexical scoping.1455 Object-oriented nesting of member functions in a \lstinline[language=C++]@class@ allows eliding \lstinline[language=C++]@this->@ because of lexical scoping. 1438 1456 However, for other aggregate parameters, qualification is necessary: 1439 1457 \begin{cfa} 1440 1458 struct T { double m, n; }; 1441 int S::f( T & t ) { $\C{// multiple aggregate parameters}$1442 c; i; d; $\C{\color{red}// this--{\ textgreater}.c, this--{\textgreater}.i, this--{\textgreater}.d}$1459 int C::f( T & t ) { $\C{// multiple aggregate parameters}$ 1460 c; i; d; $\C{\color{red}// this--{\small\textgreater}.c, this--{\small\textgreater}.i, this--{\small\textgreater}.d}$ 1443 1461 `t.`m; `t.`n; $\C{// must qualify}$ 1444 1462 } … … 1454 1472 with the generality of opening multiple aggregate-parameters: 1455 1473 \begin{cfa} 1456 voidf( S & s, T & t ) `with ( s, t )` { $\C{// multiple aggregate parameters}$1474 int f( S & s, T & t ) `with ( s, t )` { $\C{// multiple aggregate parameters}$ 1457 1475 c; i; d; $\C{\color{red}// s.c, s.i, s.d}$ 1458 1476 m; n; $\C{\color{red}// t.m, t.n}$ … … 1520 1538 \begin{cfa} 1521 1539 struct S { int i, j; } sv; 1522 with ( sv ) { $\C{ //implicit reference}$1540 with ( sv ) { $\C{implicit reference}$ 1523 1541 S & sr = sv; 1524 with ( sr ) { $\C{ //explicit reference}$1542 with ( sr ) { $\C{explicit reference}$ 1525 1543 S * sp = &sv; 1526 with ( *sp ) { $\C{ //computed reference}$1527 i = 3; j = 4; $\C{\color{red}// sp--{\ textgreater}i, sp--{\textgreater}j}$1544 with ( *sp ) { $\C{computed reference}$ 1545 i = 3; j = 4; $\C{\color{red}// sp--{\small\textgreater}i, sp--{\small\textgreater}j}$ 1528 1546 } 1529 1547 i = 2; j = 3; $\C{\color{red}// sr.i, sr.j}$ … … 1575 1593 \begin{cquote} 1576 1594 \lstDeleteShortInline@% 1577 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}1578 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\1595 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{\hspace{\parindentlnth}}l@{}} 1596 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1579 1597 \begin{cfa} 1580 1598 `[5] *` int x1; … … 1591 1609 \begin{cfa} 1592 1610 // array of 5 pointers to int 1593 // pointer to a rray of 5 int1594 // function returning pointer to a rray of 5 int and takingint1611 // pointer to an array of 5 int 1612 // function returning pointer to an array of 5 int and taking an int 1595 1613 \end{cfa} 1596 1614 \end{tabular} … … 1603 1621 \begin{cquote} 1604 1622 \lstDeleteShortInline@% 1605 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}1606 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\1623 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 1624 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1607 1625 \begin{cfa} 1608 1626 `*` int x, y; … … 1623 1641 \begin{cquote} 1624 1642 \lstDeleteShortInline@% 1625 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}1626 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{C}} \\1643 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{\hspace{\parindentlnth}}l@{}} 1644 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{C}} \\ 1627 1645 \begin{cfa} 1628 1646 [ 5 ] int z; … … 1665 1683 \begin{cquote} 1666 1684 \lstDeleteShortInline@% 1667 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}1668 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{C}} \\1685 \begin{tabular}{@{}l@{\hspace{1em}}l@{\hspace{1em}}l@{}} 1686 \multicolumn{1}{c@{\hspace{1em}}}{\textbf{\CFA}} & \multicolumn{1}{c@{\hspace{1em}}}{\textbf{C}} \\ 1669 1687 \begin{cfa} 1670 1688 extern const * const int x; 1671 static const * [ 5] const int y;1689 static const * [ 5 ] const int y; 1672 1690 \end{cfa} 1673 1691 & 1674 1692 \begin{cfa} 1675 1693 int extern const * const x; 1676 static const int (* const y)[ 5]1694 static const int (* const y)[ 5 ] 1677 1695 \end{cfa} 1678 1696 & … … 1690 1708 \begin{cquote} 1691 1709 \lstDeleteShortInline@% 1692 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}1693 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\1710 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 1711 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1694 1712 \begin{cfa} 1695 1713 y = (* int)x; … … 1708 1726 as well, parameter names are optional, \eg: 1709 1727 \begin{cfa} 1710 [ int x ] f ( /* void */ ); $\C[2.5in]{// returning int with no parameters}$1711 [ int x ] f (...); $\C{// returning int with unknown parameters}$1712 [ * int ] g ( int y ); $\C{// returning pointer to int with int parameter}$1713 [ void ] h ( int, char ); $\C{// returning no result with int and char parameters}$1714 [ * int, int ] j ( int ); $\C{// returning pointer to int and intwith int parameter}$1728 [ int x ] f ( /* void */ ); $\C{// returning int with no parameters}$ 1729 [ int x ] f (...); $\C{// returning int with unknown parameters}$ 1730 [ * int ] g ( int y ); $\C{// returning pointer to int with int parameter}$ 1731 [ void ] h ( int, char ); $\C{// returning no result with int and char parameters}$ 1732 [ * int, int ] j ( int ); $\C{// returning pointer to int and int, with int parameter}$ 1715 1733 \end{cfa} 1716 1734 This syntax allows a prototype declaration to be created by cutting and pasting source text from the function-definition header (or vice versa). … … 1718 1736 \begin{cquote} 1719 1737 \lstDeleteShortInline@% 1720 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}1721 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\1738 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 1739 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 1722 1740 \begin{cfa} 1723 1741 [double] foo(), foo( int ), foo( double ) {...} … … 1734 1752 The syntax for pointers to \CFA functions specifies the pointer name on the right, \eg: 1735 1753 \begin{cfa} 1736 * [ int x ] () fp; $\C{// pointer to function returning int with no parameters}$1737 * [ * int ] ( int y ) gp; $\C{// pointer to function returning pointer to int with int parameter}$1738 * [ ] ( int, char ) hp; $\C{// pointer to function returning no result with int and char parameters}$1739 * [ * int, int ] ( int ) jp; $\C{// pointer to function returning pointer to int and intwith int parameter}$1754 * [ int x ] () fp; $\C{// pointer to function returning int with no parameters}$ 1755 * [ * int ] ( int y ) gp; $\C{// pointer to function returning pointer to int with int parameter}$ 1756 * [ ] ( int, char ) hp; $\C{// pointer to function returning no result with int and char parameters}$ 1757 * [ * int, int ] ( int ) jp; $\C{// pointer to function returning pointer to int and int, with int parameter}$ 1740 1758 \end{cfa} 1741 1759 Note, a function name cannot be specified: 1742 1760 \begin{cfa} 1743 * [ int x ] f () fp; $\C{// function name "f" is disallowed}\CRT$1761 * [ int x ] f () fp; $\C{// function name "f" is disallowed}$ 1744 1762 \end{cfa} 1745 1763 … … 2045 2063 \begin{cquote} 2046 2064 \lstDeleteShortInline@% 2047 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{\hspace{2\parindentlnth}}l@{}}2065 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{\hspace{\parindentlnth}}l@{}} 2048 2066 \begin{cfa} 2049 2067 20_`hh` // signed char … … 2129 2147 return (W){ l.stones + r.stones }; 2130 2148 } 2131 W |?`st|( double w) { return (W){ w }; }2132 W |?`lb|( double w) { return (W){ w/14.0 }; }2133 W |?`kg|( double w) { return (W){ w*0.16 }; }2149 W |?`st|( double w ) { return (W){ w }; } 2150 W |?`lb|( double w ) { return (W){ w / 14.0 }; } 2151 W |?`kg|( double w ) { return (W) { w * 0.16 }; } 2134 2152 2135 2153 … … 2154 2172 return W( l.stones + r.stones ); 2155 2173 } 2156 W |operator"" _st|(unsigned long long int w) {return W(w); }2157 W |operator"" _lb|(unsigned long long int w) {return W(w/14.0); }2158 W |operator"" _kg|(unsigned long long int w) {return W(w*0.16); }2159 W |operator"" _st|(long double w ) { return W( w ); }2160 W |operator"" _lb|(long double w ) { return W( w / 14.0 ); }2161 W |operator"" _kg|(long double w ) { return W( w * 0.16 ); }2174 W |operator"" _st|( unsigned long long int w ) { return W( w ); } 2175 W |operator"" _lb|( unsigned long long int w ) { return W( w / 14.0 ); } 2176 W |operator"" _kg|( unsigned long long int w ) { return W( w * 0.16 ); } 2177 W |operator"" _st|( long double w ) { return W( w ); } 2178 W |operator"" _lb|( long double w ) { return W( w / 14.0 ); } 2179 W |operator"" _kg|( long double w ) { return W( w * 0.16 ); } 2162 2180 int main() { 2163 2181 W w, heavy = { 20 }; … … 2192 2210 \begin{cquote} 2193 2211 \lstDeleteShortInline@% 2194 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}2195 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{Definition}} & \multicolumn{1}{c}{\textbf{Usage}} \\2212 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 2213 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{Definition}} & \multicolumn{1}{c}{\textbf{Usage}} \\ 2196 2214 \begin{cfa} 2197 2215 const short int `MIN` = -32768; … … 2211 2229 \begin{cquote} 2212 2230 \lstDeleteShortInline@% 2213 \begin{tabular}{@{}l@{\hspace{2\parindentlnth}}l@{}} 2214 \multicolumn{1}{c@{\hspace{2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 2231 \lstset{basicstyle=\linespread{0.9}\sf\small} 2232 \begin{tabular}{@{}l@{\hspace{0.5\parindentlnth}}l@{}} 2233 \multicolumn{1}{c@{\hspace{0.5\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 2215 2234 \begin{cfa} 2216 2235 MIN 2217 2218 2236 MAX 2219 2220 2237 PI 2221 2238 E … … 2223 2240 & 2224 2241 \begin{cfa} 2225 SCHAR_MIN, CHAR_MIN, SHRT_MIN, INT_MIN, LONG_MIN, LLONG_MIN, 2226 FLT_MIN, DBL_MIN, LDBL_MIN 2227 SCHAR_MAX, UCHAR_MAX, SHRT_MAX, INT_MAX, LONG_MAX, LLONG_MAX, 2228 FLT_MAX, DBL_MAX, LDBL_MAX 2242 SCHAR_MIN, CHAR_MIN, SHRT_MIN, INT_MIN, LONG_MIN, LLONG_MIN, FLT_MIN, DBL_MIN, LDBL_MIN 2243 SCHAR_MAX, UCHAR_MAX, SHRT_MAX, INT_MAX, LONG_MAX, LLONG_MAX, FLT_MAX, DBL_MAX, LDBL_MAX 2229 2244 M_PI, M_PIl 2230 2245 M_E, M_El … … 2241 2256 \begin{cquote} 2242 2257 \lstDeleteShortInline@% 2243 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}2244 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{Definition}} & \multicolumn{1}{c}{\textbf{Usage}} \\2258 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 2259 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{Definition}} & \multicolumn{1}{c}{\textbf{Usage}} \\ 2245 2260 \begin{cfa} 2246 2261 float `log`( float x ); … … 2260 2275 \begin{cquote} 2261 2276 \lstDeleteShortInline@% 2262 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}2263 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\2277 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 2278 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 2264 2279 \begin{cfa} 2265 2280 log … … 2288 2303 \begin{cquote} 2289 2304 \lstDeleteShortInline@% 2290 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}2291 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{Definition}} & \multicolumn{1}{c}{\textbf{Usage}} \\2305 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 2306 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{Definition}} & \multicolumn{1}{c}{\textbf{Usage}} \\ 2292 2307 \begin{cfa} 2293 2308 unsigned int `abs`( int ); … … 2307 2322 \begin{cquote} 2308 2323 \lstDeleteShortInline@% 2309 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}2310 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\2324 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 2325 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 2311 2326 \begin{cfa} 2312 2327 abs … … 2327 2342 The following shows one example where \CFA \emph{extends} an existing standard C interface to reduce complexity and provide safety. 2328 2343 C/\Celeven provide a number of complex and overlapping storage-management operation to support the following capabilities: 2329 \begin{description} %[topsep=3pt,itemsep=2pt,parsep=0pt]2344 \begin{description}[topsep=3pt,itemsep=2pt,parsep=0pt] 2330 2345 \item[fill] 2331 2346 an allocation with a specified character. … … 2377 2392 \end{cfa} 2378 2393 \lstDeleteShortInline@% 2379 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}2380 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\2394 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 2395 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{C}} \\ 2381 2396 \begin{cfa} 2382 2397 ip = alloc(); … … 2399 2414 ip = (int *)malloc( sizeof( int ) ); memset( ip, fill, dim * sizeof( int ) ); 2400 2415 ip = (int *)realloc( ip, 2 * dim * sizeof( int ) ); 2401 ip = (int *)realloc( ip, 4 * dim * sizeof( int ) ); 2402 memset( ip, fill, 4 * dim * sizeof( int ) ); 2416 ip = (int *)realloc( ip, 4 * dim * sizeof( int ) ); memset( ip, fill, 4 * dim * sizeof( int ) ); 2417 2403 2418 ip = memalign( 16, sizeof( int ) ); 2404 2419 ip = memalign( 16, sizeof( int ) ); memset( ip, fill, sizeof( int ) ); … … 2437 2452 \begin{cquote} 2438 2453 \lstDeleteShortInline@% 2439 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}l@{}}2440 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{\CC}} \\2454 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}l@{}} 2455 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{c}{\textbf{\CC}} \\ 2441 2456 \begin{cfa} 2442 2457 int x = 1, y = 2, z = 3; … … 2526 2541 \centering 2527 2542 \lstDeleteShortInline@% 2528 \begin{tabular}{@{}l@{\hspace{ 2\parindentlnth}}@{\hspace{2\parindentlnth}}l@{}}2529 \multicolumn{1}{c@{\hspace{ 2\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{@{\hspace{2\parindentlnth}}c}{\textbf{C}} \\2543 \begin{tabular}{@{}l@{\hspace{\parindentlnth}}@{\hspace{\parindentlnth}}l@{}} 2544 \multicolumn{1}{c@{\hspace{\parindentlnth}}}{\textbf{\CFA}} & \multicolumn{1}{@{\hspace{\parindentlnth}}c}{\textbf{C}} \\ 2530 2545 \begin{cfa} 2531 2546 #include <gmp> … … 2722 2737 Objective-C and Cyclone are two other extensions to C with different design goals than \CFA, as discussed above. 2723 2738 Other languages extend C with more focused features. 2724 $\mu$\CC~\cite{uC++book}, CUDA~\cite{Nickolls08}, ispc~\cite{Pharr12}, and Sierra~\cite{Leissa14} add concurrent or data-parallel primitives to C or \CC; 2725 data-parallel features have not yet been added to \CFA, but are easily incorporated within its design, while concurrency primitives similar to those in $\mu$\CC have already been added~\cite{Delisle18}. 2726 Finally, CCured~\cite{Necula02} and Ironclad \CC~\cite{DeLozier13} attempt to provide a more memory-safe C by annotating pointer types with garbage collection information; type-checked polymorphism in \CFA covers several of C's memory-safety issues, but more aggressive approaches such as annotating all pointer types with their nullability or requiring runtime garbage collection are contradictory to \CFA's backwards compatibility goals. 2739 CUDA~\cite{Nickolls08}, ispc~\cite{Pharr12}, and Sierra~\cite{Leissa14} add data-parallel primitives to C or \CC; 2740 such features have not yet been added to \CFA, but are easily incorporated within its design. 2741 Finally, some C extensions (or suggested extensions) attempt to provide a more memory-safe C~\cite{Boehm88,Rafkind09}; 2742 type-checked polymorphism in \CFA covers several of C's memory-safety issues, but more aggressive approaches such as annotating all pointer types with their nullability are contradictory to \CFA's backwards compatibility goals. 2727 2743 2728 2744 … … 2773 2789 \section{Acknowledgments} 2774 2790 2775 The authors would like to recognize the design assistance of Glen Ditchfield, Richard Bilson, Thierry Delisle, Andrew Beach and Brice Dobry on the features described in this paper, and thank Magnus Madsen for feedback on the writing. 2776 This work is supported by a corporate partnership with Huawei Ltd.\ (\url{http://www.huawei.com}), and Aaron Moss and Peter Buhr are partially funded by the Natural Sciences and Engineering Research Council of Canada. 2777 2778 2791 The authors would like to recognize the design assistance of Glen Ditchfield, Richard Bilson, Thierry Delisle, and Andrew Beach on the features described in this paper, and thank Magnus Madsen for feedback in the writing. 2792 This work is supported through a corporate partnership with Huawei Ltd.\ (\url{http://www.huawei.com}), and Aaron Moss and Peter Buhr are partially funded by the Natural Sciences and Engineering Research Council of Canada. 2793 2794 % the first author's \grantsponsor{NSERC-PGS}{NSERC PGS D}{http://www.nserc-crsng.gc.ca/Students-Etudiants/PG-CS/BellandPostgrad-BelletSuperieures_eng.asp} scholarship. 2795 2796 2797 \bibliographystyle{plain} 2779 2798 \bibliography{pl} 2780 2799 … … 2784 2803 \section{Benchmark Stack Implementation} 2785 2804 \label{sec:BenchmarkStackImplementation} 2805 2806 \lstset{basicstyle=\linespread{0.9}\sf\small} 2786 2807 2787 2808 Throughout, @/***/@ designates a counted redundant type annotation; code reformatted for brevity.
Note:
See TracChangeset
for help on using the changeset viewer.