Automatically generated by Mendeley Desktop 1.17.8 Any changes to this file will be lost if it is regenerated by Mendeley. BibTeX export options can be customized via Options -> BibTeX in Mendeley Desktop @misc{Endler, author = {Endler, Matthias}, title = {{A curated list of static analysis tools, linters and code quality checkers for various programming languages}}, url = {https://github.com/mre/awesome-static-analysis} } @article{Dhurjati2003, abstract = {Traditional approaches to enforcing memory safety of programs rely heavily on runtime checks of memory accesses and on garbage collection, both of which are unattractive for embedded applications. The long-term goal of our work is to enable 100{\%} static enforcement of memory safety for embedded programs through advanced compiler techniques and minimal semantic restrictions on programs. The key result of this paper is a compiler technique that ensures memory safety of dynamically allocated memory without programmer annotations, runtime checks, or garbage collection, and works for a large subclass of type-safe C programs. The technique is based on a fully automatic pool allocation (i.e., region-inference) algorithm for C programs we developed previously, and it ensures safety of dynamically allocated memory while retaining explicit deallocation of individual objects within regions (to avoid garbage collection). For a diverse set of embedded C programs (and using a previous technique to avoid null pointer checks), we show that we are able to statically ensure the safety of pointer and dynamic memory usage in all these programs. We also describe some improvements over our previous work in static checking of array accesses. Overall, we achieve 100{\%} static enforcement of memory safety without new language syntax for a significant subclass of embedded C programs, and the subclass is much broader if array bounds checks are ignored.}, author = {Dhurjati, D and Kowshik, S and Adve, V and Lattner, C}, doi = {10.1145/780742.780743}, file = {:home/steveej/src/github/steveej/msc-thesis/docs/Memory Safety Without Runtime Checks or Garbage.pdf:pdf}, isbn = {0362-1340}, issn = {03621340}, journal = {Acm Sigplan Notices}, keywords = {automatic pool allocation,compilers,embedded systems,languages,programming languages,region management,security,static analysis}, number = {7}, pages = {69--80}, title = {{Memory safety without runtime checks or garbage collection}}, volume = {38}, year = {2003} } @article{Levy2015a, abstract = {Rust, a new systems programming language, provides compile-time memory safety checks to help eliminate runtime bugs that manifest from improper memory management. This feature is advantageous for operating system development, and especially for embedded OS development, where recovery and debugging are particularly challenging. However, embedded platforms are highly event-based, and Rust's memory safety mechanisms largely presume threads. In our experience developing an operating system for embedded systems in Rust, we have found that Rust's ownership model prevents otherwise safe resource sharing common in the embedded domain, conflicts with the reality of hardware resources, and hinders using closures for programming asynchronously. We describe these experiences and how they relate to memory safety as well as illustrate our workarounds that preserve the safety guarantees to the largest extent possible. In addition, we draw from our experience to propose a new language extension to Rust that would enable it to provide better memory safety tools for event-driven platforms.}, author = {Levy, Amit and Andersen, Michael P. and Campbell, Bradford and Culler, David and Dutta, Prabal and Ghena, Branden and Levis, Philip and Pannuto, Pat}, doi = {10.1145/2818302.2818306}, file = {:home/steveej/src/github/steveej/msc-thesis/docs/tock-plos2015.pdf:pdf}, isbn = {9781450339421}, journal = {PLOS: Workshop on Programming Languages and Operating Systems}, keywords = {embedded operating systems,linear types,ownership,rust}, pages = {21--26}, title = {{Ownership is Theft: Experiences Building an Embedded OS in Rust}}, url = {http://dl.acm.org/citation.cfm?id=2818302.2818306}, year = {2015} }