diff --git a/RESEARCH.md b/RESEARCH.md index 7a6a983e..e1af8ac9 100644 --- a/RESEARCH.md +++ b/RESEARCH.md @@ -1,7 +1,9 @@ -# C PROGRAMMING AND DEBUGGING +# C PROGRAMMING, LLVM, AND DEBUGGING http://clang.llvm.org/docs/AddressSanitizer.html https://www.iar.com/support/resources/articles/advanced-preprocessor-tips-and-tricks/ http://jvns.ca/blog/2016/03/01/a-few-notes-on-the-stack/ +https://www.recurse.com/blog/7-understanding-c-by-learning-assembly +http://msm.runhello.com/p/1003 # OWNERSHIP & BORROWING http://blog.piston.rs/2016/01/23/dynamo/ diff --git a/TODO.md b/TODO.md index c590c4be..b0b3ebe7 100644 --- a/TODO.md +++ b/TODO.md @@ -1,13 +1,10 @@ # Compiler - - Can't have star in function name when baking - Don't apply borrowing rules to primitive (auto-copyable) types like int/float/bool/char - - Compile struct member lookups properly - Automatically implement for structs and arrays: - str - copy - delete - Use 'delete' instead of free for memory management - - Bake can't handle when a function changes signature - Can't declare array literals inside array literals (works with temp variables inside though) - Ownership in while loops - Handle global variables referenced inside functions @@ -38,6 +35,9 @@ # Dynamic Runtime - Remove support for dynamic struct getters + - Make defstruct into a macro instead, remove it from eval + - Use a more generalized method for generating 'str' function when inspecting ptr:s at the REPL (some kind of "hook" system) + - Define the constructor of a struct to be the same name as the struct (not "new-STRUCTNAME"). Save the struct definition in a dictionary of struct definitions. - Should be error when ptr of wrong type is sent to baked function - Binding to a function call in 'let' crashes process!!! - Valgrind finds error with strdup in eval.c:312 ('apply' function)