C, with more
certainty.
Memory safety for the C you already write. WeaveC is a drop-in C compiler that guards every memory access and stops the program at the first bad one, with a precise report.
#include <stdio.h>#include <stdlib.h>
struct vec { int *data; size_t len;};
int get(struct vec *v, size_t i) { return v->data[i]; }
int main(int argc, char **argv) { struct vec v = {calloc(4, sizeof(int)), 4}; if (!v.data || argc < 2) return 1; printf("%d\n", get(&v, (size_t)atoi(argv[1]))); free(v.data); return 0;}weavec: heap-buffer-overflow at vec.c:9:43: read of 4 bytes
↳ 0 bytes after the 16-byte heap objectStart small. Build confidence.
From one source file to a whole build.
Choose the next step for your project.
Same code.
Same build.
Point CC at weavec-cc and keep your sources, your build and your ABI. Every access is checked against the object its pointer came from, and freed memory is reused only once nothing points to it.
Read the safety guaranteesGuard every access
Loads, stores, memory intrinsics and library calls are checked, however far an index jumps, and however long ago a block was freed.
Keep your toolchain
weavec-cc is Clang's driver: configure scripts, Make and CMake see a C compiler, and code written to be clean under AddressSanitizer is clean under WeaveC.
Know the boundary
A guard is removed only where a local rule proves it redundant, and the ledger lists each access. WEAVEC_UNSAFE marks the code you choose to leave unguarded.
Keep the reference close.
Early software. Explicit guarantees. The guarantee covers every guarded access, under named assumptions; the scope page lists what it does not catch. Read the scope and limits →