f% Bibliography of key references for "LaTeX for Thesis and Large Documents"
% For use with BibTeX

% --------------------------------------------------
% Cforall

@misc{cfa:frontpage,
    url		= {https://cforall.uwaterloo.ca}
}
@article{cfa:typesystem,
    author    = {Aaron Moss and Robert Schluntz and Peter A. Buhr},
    title     = {{\CFA} : Adding modern programming language features to {C}},
    journal   = {Softw. Pract. Exp.},
    volume    = {48},
    number    = {12},
    pages     = {2111--2146},
    year      = {2018},
}

% --------------------------------------------------
% C facts

@misc{arr:gnu-flex-mbr,
    title	= {Arrays of Length Zero},
    howpublished= {\url{https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html}},
}


% --------------------------------------------------
% C++ facts

@misc{cxx:raii-abi,
    key		= {Itanium},
    title	= {Itanium {C}++ {ABI}},
    howpublished= {\url{https://itanium-cxx-abi.github.io/cxx-abi/abi.html}},
}


% --------------------------------------------------
% Array prior work

@inproceedings{arr:futhark:tytheory,
    author	= {Troels Henriksen and Martin Elsman},
    title	= {Towards Size-Dependent Types for Array Programming},
    year	= {2021},
    publisher	= {Association for Computing Machinery},
    address	= {New York, NY, USA},
    booktitle	= {Proceedings of the 7th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming},
    pages	= {1-14},
    numpages	= {14},
    location	= {Virtual, Canada},
    series	= {ARRAY 2021}
}

@article{arr:dex:long,
    author	= {Adam Paszke and Daniel D. Johnson and David Duvenaud and
		   Dimitrios Vytiniotis and Alexey Radul and Matthew J. Johnson and
		   Jonathan Ragan-Kelley and Dougal Maclaurin},
    title	= {Getting to the Point. Index Sets and Parallelism-Preserving Autodiff
		   for Pointful Array Programming},
    publisher	= {Association for Computing Machinery},
    address	= {New York, NY, USA},
    volume	= 5,
    number	= {ICFP},
    year	= 2021,
    journal	= {Proc. ACM Program. Lang.},
    month	= {aug},
}


@misc{arr:ada:learn,
    title	= {Learn Adacore: Arrays},
    howpublished= {\url{https://learn.adacore.com/courses/intro-to-ada/chapters/arrays.html}},
}


% --------------------------------------------------
% Linked-list prior work

@misc{CFAStackEvaluation,
    contributer	= {a3moss@plg},
    author	= {Aaron Moss},
    title	= {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
    year	= 2018,
    howpublished= {\url{https://cforall.uwaterloo.ca/CFAStackEvaluation.zip}},
}

@misc{lst:linuxq,
    key		= {queue},
    title	= {queue(7) -- Linux manual page},
    howpublished= {\url{https://man7.org/linux/man-pages/man3/queue.3.html}},
}
% see also https://man7.org/linux/man-pages/man7/queue.7.license.html
%          https://man7.org/tlpi/
%          https://www.kernel.org/doc/man-pages/

@misc{lst:stl,
    key		= {list},
    title	= {std::list},
    howpublished= {\url{https://en.cppreference.com/w/cpp/container/list}},
}

% -------------------------------------------------
% Safety

@article{Blache19,
    author	= {Gunter Blache},
    title	= {Handling Index-out-of-bounds in safety-critical embedded {C} code using model-based development},
    journal	= {Software \& Systems Modeling},
    volume	= 18,
    year	= 2019,
    pages	= {1795-1805},
}

@InProceedings{Ruef19,
    author	= {Andrew Ruef and Leonidas Lampropoulos and Ian Sweet and David Tarditi and Michael Hicks},
    title	= {Achieving Safety Incrementally with {Checked C}},
    editor	= {Flemming Nielson and David Sands},
    booktitle	= {Principles of Security and Trust},
    publisher	= {Springer International Publishing},
    address	= {Cham},
    year	= {2019},
    pages	= {76-98},
}

@misc{Mendio24,
    contributer	= {pabuhr@plg},
    title	= {What are the most secure programming languages?},
    author	= {Mend.io (White Source Ltd.)},
    year	= 2024,
    howpublished= {\url{https://www.mend.io/most-secure-programming-languages}},
}

@phdthesis{Emre2022,
    author	= "Mehmet Emre",
    title	= "Translating C to Safe Rust: Reasoning about Pointer Types and Lifetimes",
    school	= "UC Santa Barbara",
    year	= 2022
}

@inproceedings{White2016,
    author	= {White, David H. and Rupprecht, Thomas and L\"{u}ttgen, Gerald},
    title	= {DSI: an evidence-based approach to identify dynamic data structures in C programs},
    year	= {2016},
    isbn	= {9781450343909},
    publisher	= {Association for Computing Machinery},
    address	= {New York, NY, USA},
    url		= {https://doi.org/10.1145/2931037.2931071},
    doi		= {10.1145/2931037.2931071},
    booktitle	= {Proceedings of the 25th International Symposium on Software Testing and Analysis},
    pages	= {259-269},
    numpages	= {11},
    keywords	= {Data structure identification, dynamic data structures, pointer programs, program comprehension},
    location	= {Saarbr\"{u}cken, Germany},
    series	= {ISSTA 2016}
}

% -----------------------------------------------
% Misc

@misc{RVO20,
    contributer	= {pabuhr@plg},
    title	= {Return value optimization ({RVO})},
    author	= {Special Interest Group on {C++}},
    year	= 2020,
    month	= jun,
    howpublished= {\url{https://sigcpp.github.io/2020/06/08/return-value-optimization}},
}

@misc{DependentType,
    contributer	= {pabuhr@plg},
    title	= {Dependent Type},
    author	= {HaskellWik},
    year	= 2021,
    month	= apr,
    howpublished= {\url{https://wiki.haskell.org/Dependent_type}},
}


@misc{Anderson94,
    contributer	= {pabuhr@plg},
    title	= {Clockwise/Spiral Rule},
    author	= {David Anderson},
    year	= 1994,
    month	= may,
    howpublished= {\url{https://c-faq.com/decl/spiral.anderson.html}},
}

@article{Brinker26,
    author	= {Brinker, Andrew Lilley},
    title	= {Memory Safety for Skeptics},
    year	= {2026},
    publisher	= {ACM},
    address	= {New York, NY, USA},
    volume	= {69},
    number	= {2},
    journal	= {CACM},
    month	= jan,
    pages	= {52-58},
}

@book{Sutter99,
    keywords	= {C++, programming problems},
    author	= {Herb Sutter},
    title	= {Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions},
    publisher	= {Addison-Wesley Longman Publishing Co., Inc.},
    address	= {75 Arlington Street, Boston, MA, USA},
    month	= jun,
    year	= 1999,
}

@book{AWK,
    keywords	= {AWK, string manipulation language},
    author	= {Alfred V. Aho and Brian W. Kernighan and Peter Weinberger},
    title	= {The AWK programming language},
    publisher	= {Addison-Wesley Longman Publishing Co., Inc.},
    address	= {75 Arlington Street, Boston, MA, USA},
    month	= sep,
    year	= 1987,
}
