checkedc-llvm-project
noplate
checkedc-llvm-project | noplate | |
---|---|---|
1 | 4 | |
13 | 41 | |
- | - | |
6.3 | 6.0 | |
7 days ago | 5 months ago | |
C | ||
- | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
checkedc-llvm-project
-
Checked C
Note that active development seems to be continuing here:
https://github.com/secure-sw-dev/checkedc-llvm-project
noplate
-
Polymorphic Types in C [pdf]
Hi Martin, thank you for writing this proposal. This is just my two cents, but one-off void* functions, like qsort, are less of a pain point relative to generic containers. With generic containers it's common to have a collection of void* functions that must be consistently invoked with identical type T. Correct me if I'm wrong, but this proposal cannot genericize a struct field, i.e. it can genericize type 'T' but not 'T->someField'. The latter would be useful for something like 'vec_push(v,p)' where 'v->data[]' is the type T needed to determine if 'p' is a compatible type.
Tangentially related, the macro-based containers you've written here [1] are the best answer for type-generic containers I've come across. One "gotcha" is the container name must be a valid C identifier otherwise it doesn't token paste correctly (see Example #2 of your REAMDE where you typedef'd string* as string_ptr to workaround this). Would you give consideration to a new preprocessor mechanism for concatenating a list of tokens into a single valid C identifier? i.e. Something like CONCAT(struct Foo *) would produce struct_Foo_Ptr? The result is guaranteed token paste-able.
[1] https://github.com/uecker/noplate
- Neverflow: Set of C macros that guard against buffer overflows
-
New C features in GCC 13
I am exploring way on how to implement this in C (with some extensions) as a library:
https://github.com/uecker/noplate
Certainly not production ready.
- Checked C
What are some alternatives?
CodeHawk-C - CodeHawk C Analyzer: sound static analysis of memory safety (undefined behavior)
archive-program - The GitHub Archive Program & Arctic Code Vault
Hikari-LLVM15 - A fork of Hikari Obfuscator [WIP]
clangir - A new (MLIR based) high-level IR for clang.
neverflow - Set of macros that guard against buffer overflows. Based on C99 VLA feature.
CompCert - The CompCert formally-verified C compiler
ikos - Static analyzer for C/C++ based on the theory of Abstract Interpretation.
codeql - CodeQL: the libraries and queries that power security researchers around the world, as well as code scanning in GitHub Advanced Security
c2nim - c2nim is a tool to translate Ansi C code to Nim. The output is human-readable Nim code that is meant to be tweaked by hand before and after the translation process.