noplate
neverflow
noplate | neverflow | |
---|---|---|
4 | 5 | |
41 | 126 | |
- | - | |
5.5 | 5.2 | |
12 days ago | 12 months ago | |
C | C | |
BSD 3-clause "New" or "Revised" License | MIT 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.
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
neverflow
What are some alternatives?
archive-program - The GitHub Archive Program & Arctic Code Vault
firecracker - Secure and fast microVMs for serverless computing.
CodeHawk-C - CodeHawk C Analyzer: sound static analysis of memory safety (undefined behavior)
llvm-project - The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
checkedc-llvm-project - This repo contains a version of clang that is modified to support Checked C. Checked C is an extension to C that lets programmers write C code with bounds checking and improved type-safety.
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.
CompCert - The CompCert formally-verified C compiler
dmd - dmd D Programming Language compiler
static-analysis - ⚙️ A curated list of static analysis (SAST) tools and linters for all programming languages, config files, build tools, and more. The focus is on tools which improve code quality.