stb single-file public domain libraries for C/C++
This report summarizes scanner evidence for nothings/stb, a C project with 34,808 GitHub stars. SynthScan examined 109,822 lines of code across 113 source files, recording 882 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 6.1 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 882 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 0 finding(s).
Which changes need focused human review? 882 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 882 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | stb_c_lexer.h | 1 | // stb_c_lexer.h - v0.12 - public domain Sean Barrett 2013 | COMMENT |
| LOW | stb_c_lexer.h | 21 | // 0.04 fix octal parsing bug | COMMENT |
| LOW | stb_c_lexer.h | 41 | // github:mundusnine (bugfix) | COMMENT |
| LOW | stb_c_lexer.h | 61 | #define STB_C_LEX_C_HEX_INTS Y // "0x[0-9a-fA-F]+" CLEX_intlit | COMMENT |
| LOW | stb_c_lexer.h | 81 | // "<<=" CLEX_shleq ">>=" CLEX_shreq | COMMENT |
| LOW | stb_c_lexer.h | 141 | extern "C" { | COMMENT |
| LOW | stb_c_lexer.h | 161 | extern void stb_c_lexer_get_location(const stb_lexer *lexer, const char *where, stb_lex_location *loc); | COMMENT |
| LOW | stb_c_lexer.h | 221 | typedef double stb__clex_int; | COMMENT |
| LOW | stb_c_lexer.h | 241 | #define STB__clex_hex_ints | COMMENT |
| LOW | stb_image_write.h | 201 | #ifdef _WIN32 | COMMENT |
| LOW | stb_image_write.h | 221 | #elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) | COMMENT |
| LOW | stb_image_write.h | 801 | } else | COMMENT |
| LOW | stb_image_write.h | 881 | (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) | COMMENT |
| LOW | stb_image_resize2.h | 401 | typedef uint32_t stbir_uint32; | COMMENT |
| LOW | stb_image_resize2.h | 421 | // | COMMENT |
| LOW | stb_image_resize2.h | 541 | // * Separate input and output data types | COMMENT |
| LOW | stb_image_resize2.h | 641 | STBIRDEF int stbir_set_non_pm_alpha_speed_over_quality( STBIR_RESIZE * resize, int non_pma_alpha_speed_over_quality ); | COMMENT |
| LOW | stb_image_resize2.h | 661 | STBIRDEF int stbir_resize_extended( STBIR_RESIZE * resize ); | COMMENT |
| LOW | stb_image_resize2.h | 681 | // Note that you MUST call stbir_build_samplers_with_splits before stbir_resize_extended_split! | COMMENT |
| LOW | stb_image_resize2.h | 701 | // | COMMENT |
| LOW | stb_image_resize2.h | 721 | // return optional_output; // return the optional buffer that we filled | COMMENT |
| LOW | stb_image_resize2.h | 781 | #endif // STBIR_INCLUDE_STB_IMAGE_RESIZE2_H | COMMENT |
| LOW | stb_image_resize2.h | 801 | #else | COMMENT |
| LOW | stb_image_resize2.h | 821 | #endif | COMMENT |
| LOW | stb_image_resize2.h | 841 | #endif | COMMENT |
| LOW | stb_image_resize2.h | 881 | STBIRI_AR_PM = 16, | COMMENT |
| LOW | stb_image_resize2.h | 1161 | return (unsigned char) ((bias + scale*t) >> 16); | COMMENT |
| LOW | stb_image_resize2.h | 1181 | COMMENT | |
| LOW | stb_image_resize2.h | 1201 | #define STBIR_AVX2 | COMMENT |
| LOW | stb_image_resize2.h | 1221 | #endif | COMMENT |
| LOW | stb_image_resize2.h | 1241 | #else | COMMENT |
| LOW | stb_image_resize2.h | 1261 | #else | COMMENT |
| LOW | stb_image_resize2.h | 1281 | #endif | COMMENT |
| LOW | stb_image_resize2.h | 1301 | #endif | COMMENT |
| LOW | stb_image_resize2.h | 1321 | #define stbir__simdf_load2( out, ptr ) (out) = _mm_castsi128_ps( _mm_loadl_epi64( (__m128i*)(ptr)) ) // top values can | COMMENT |
| LOW | stb_image_resize2.h | 1361 | out1 = _mm_unpackhi_epi16( ireg, zero ); \ | COMMENT |
| LOW | stb_image_resize2.h | 1381 | #define stbir__simdf_madd1( out, add, mul1, mul2 ) (out) = _mm_fmadd_ss( mul1, mul2, add ) | COMMENT |
| LOW | stb_image_resize2.h | 1401 | COMMENT | |
| LOW | stb_image_resize2.h | 1461 | #if defined(_MSC_VER) && !defined(__clang__) | COMMENT |
| LOW | stb_image_resize2.h | 1501 | #include <immintrin.h> | COMMENT |
| LOW | stb_image_resize2.h | 1641 | COMMENT | |
| LOW | stb_image_resize2.h | 1661 | COMMENT | |
| LOW | stb_image_resize2.h | 1721 | #define stbir__simdf_load1( out, ptr ) (out) = vld1q_dup_f32( (float const*)(ptr) ) // top values can be random (not d | COMMENT |
| LOW | stb_image_resize2.h | 1761 | { \ | COMMENT |
| LOW | stb_image_resize2.h | 1781 | #define stbir__simdf_madd( out, add, mul1, mul2 ) (out) = vfmaq_f32( add, mul1, mul2 ) | COMMENT |
| LOW | stb_image_resize2.h | 1921 | COMMENT | |
| LOW | stb_image_resize2.h | 1981 | #define stbir_simdi_castf( reg ) (reg) | COMMENT |
| LOW | stb_image_resize2.h | 2021 | v128_t tmp = wasm_u16x8_extend_low_u8x16(ireg); \ | COMMENT |
| LOW | stb_image_resize2.h | 2041 | #define stbir__simdf_add_mem( out, reg, ptr ) (out) = wasm_f32x4_add( reg, wasm_v128_load( (void const*)(ptr) ) | COMMENT |
| LOW | stb_image_resize2.h | 2121 | #define STBIR__SIMDF_CONST(var, x) stbir__simdf var = (v128_t)(stbir__f32x4){ x, x, x, x } | COMMENT |
| LOW | stb_image_resize2.h | 2141 | return wasm_f32x4_extract_lane( wasm_f32x4_ceil( wasm_f32x4_splat(x) ), 0); | COMMENT |
| LOW | stb_image_resize2.h | 2161 | #define stbir__simdfX_madd stbir__simdf8_madd | COMMENT |
| LOW | stb_image_resize2.h | 2181 | static const stbir__simdf8 STBIR_simd_point58 = { 0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5 }; | COMMENT |
| LOW | stb_image_resize2.h | 2201 | #define stbir__simdfX_1a1a stbir__simdf_1a1a | COMMENT |
| LOW | stb_image_resize2.h | 2541 | #define stbir__simdf_0123to0001( out, reg ) (out) = stbir__simdf_swiz( reg, 0,0,0,1 ) | COMMENT |
| LOW | stb_image_resize2.h | 2781 | #define STBIR_PROFILE_START_ll( info, wh ) { stbir_uint64 wh##thiszonetime = STBIR_PROFILE_FUNC(); stbir_uint64 * wh##sa | COMMENT |
| LOW | stb_image_resize2.h | 2801 | #define STBIR_ONLY_PROFILE_SET_SPLIT_INFO | COMMENT |
| LOW | stb_image_resize2.h | 2821 | #define STBIR_CEILF(x) ((float)ceil((float)(x))) | COMMENT |
| LOW | stb_image_resize2.h | 4081 | #define stbir__decode_swizzle | COMMENT |
| LOW | stb_image_resize2.h | 4101 | #define stbir__encode_order1 0 | COMMENT |
| 815 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/prerelease/stb_lib.h | 1467 | // ok, so I've added something that generates _two separate_ | COMMENT |
| HIGH | deprecated/stb.h | 3444 | // ok, so I've added something that generates _two separate_ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | stb_vorbis.c | 51 | // 1.10 - 2017-03-03 - more robust seeking; fix negative ilog(); clear error in open_memory | COMMENT |
| MEDIUM | stb_voxel_render.h | 116 | // everything else should be seamless. (And I'd like to change the API | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | stb_voxel_render.h | 105 | // Step 3: define STBVOX_CONFIG_PREFER_TEXBUFFER | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | stb_voxel_render.h | 105 | // Step 3: define STBVOX_CONFIG_PREFER_TEXBUFFER | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | stb_tilemap_editor.h | 71 | // representation to the game representation. (Don't forget to | COMMENT |