@nockdev/awf 6.2.6 → 6.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/.agent/config.yaml +2 -2
  2. package/.agent/core/AGENT_BEHAVIOR.md +1 -1
  3. package/.agent/core/AUDIT_POLICY.md +1 -1
  4. package/.agent/core/CACHE.md +1 -1
  5. package/.agent/core/DATA_SAFETY.md +1 -1
  6. package/.agent/core/MEMORY_PATHS.yaml +2 -2
  7. package/.agent/core/PERMISSIONS.md +1 -1
  8. package/.agent/core/README.md +1 -1
  9. package/.agent/core/VERSION.yaml +4 -4
  10. package/.agent/core/archive/ACTIVE_MEMORY.yaml +2 -2
  11. package/.agent/core/archive/CHECKPOINT.yaml +2 -2
  12. package/.agent/core/archive/CLEANUP_ENGINE.yaml +2 -2
  13. package/.agent/core/archive/CONTEXT_INJECTOR.yaml +2 -2
  14. package/.agent/core/archive/CONTEXT_LOADER.yaml +1 -1
  15. package/.agent/core/archive/CONTEXT_OPTIMIZATION.yaml +1 -1
  16. package/.agent/core/archive/CONTEXT_PRIORITY.yaml +2 -2
  17. package/.agent/core/archive/FLOW_ENGINE.yaml +1 -1
  18. package/.agent/core/archive/GRAPH_MEMORY.yaml +1 -1
  19. package/.agent/core/archive/HYBRID_ROUTER.yaml +1 -1
  20. package/.agent/core/archive/INTENT_DETECTION.yaml +1 -1
  21. package/.agent/core/archive/MEMORY_CONSOLIDATION.yaml +3 -3
  22. package/.agent/core/archive/MEMORY_ENGINE.yaml +2 -2
  23. package/.agent/core/archive/MEMORY_UTILS.yaml +1 -1
  24. package/.agent/core/archive/REFLECTION_ENGINE.yaml +1 -1
  25. package/.agent/core/archive/ROUTER.yaml +4 -4
  26. package/.agent/core/archive/SCORING_FORMULA.yaml +2 -2
  27. package/.agent/core/archive/SEMANTIC_ENGINE.yaml +1 -1
  28. package/.agent/core/archive/SKILLS_FLOW.yaml +1 -1
  29. package/.agent/core/archive/STATE_MACHINE.yaml +1 -1
  30. package/.agent/core/archive/SUMMARIZATION_ENGINE.yaml +2 -2
  31. package/.agent/core/archive/TOKEN_BUDGETS.yaml +2 -2
  32. package/.agent/core/archive/TOKEN_LOADING.yaml +2 -2
  33. package/.agent/core/archive/TOKEN_SUMMARY.yaml +2 -2
  34. package/.agent/core/reference/CODING_STYLES.yaml +1 -1
  35. package/.agent/core/reference/LIBRARY_REGISTRY.yaml +1 -1
  36. package/.agent/core/reference/MCP_TOOLS.yaml +2 -2
  37. package/.agent/core/reference/PATTERNS.yaml +1 -1
  38. package/.agent/core/reference/SKILL_SCHEMA.yaml +1 -1
  39. package/.agent/i18n/en.yaml +6 -6
  40. package/.agent/i18n/vi.yaml +6 -6
  41. package/.agent/ide/README.md +1 -1
  42. package/.agent/ide/amazonq.json +1 -1
  43. package/.agent/ide/amp.json +1 -1
  44. package/.agent/ide/antigravity.json +1 -1
  45. package/.agent/ide/augment.json +1 -1
  46. package/.agent/ide/claude.json +1 -1
  47. package/.agent/ide/cline.json +1 -1
  48. package/.agent/ide/cody.json +1 -1
  49. package/.agent/ide/continue.json +1 -1
  50. package/.agent/ide/cursor.json +1 -1
  51. package/.agent/ide/gemini.json +1 -1
  52. package/.agent/ide/jetbrains.json +1 -1
  53. package/.agent/ide/kiro.json +1 -1
  54. package/.agent/ide/opencode.json +1 -1
  55. package/.agent/ide/roo.json +1 -1
  56. package/.agent/ide/tabnine.json +1 -1
  57. package/.agent/ide/trae.json +1 -1
  58. package/.agent/ide/vscode.json +1 -1
  59. package/.agent/ide/windsurf.json +1 -1
  60. package/.agent/ide/zed.json +1 -1
  61. package/.agent/manifest.yaml +1 -1
  62. package/.agent/personas/README.md +1 -1
  63. package/.agent/personas/architect.md +1 -1
  64. package/.agent/personas/auditor.md +1 -1
  65. package/.agent/personas/debugger.md +1 -1
  66. package/.agent/personas/developer.md +1 -1
  67. package/.agent/personas/devops.md +1 -1
  68. package/.agent/personas/documenter.md +1 -1
  69. package/.agent/personas/orchestrator.md +1 -1
  70. package/.agent/personas/persona.schema.yaml +1 -1
  71. package/.agent/personas/planner.md +1 -1
  72. package/.agent/personas/researcher.md +1 -1
  73. package/.agent/personas/security.md +1 -1
  74. package/.agent/personas/tester.md +1 -1
  75. package/.agent/rules/README.md +1 -1
  76. package/.agent/rules/archive/constitutional/tier-0-core.yaml +5 -5
  77. package/.agent/rules/archive/constitutional/tier-1-safety.yaml +5 -5
  78. package/.agent/rules/archive/constitutional/tier-2-execution.yaml +6 -6
  79. package/.agent/rules/archive/context-management.yaml +1 -1
  80. package/.agent/rules/archive/duplication-prevention.md +1 -1
  81. package/.agent/rules/archive/evidence.yaml +1 -1
  82. package/.agent/rules/archive/project-detection.md +1 -1
  83. package/.agent/rules/archive/reflection.yaml +1 -1
  84. package/.agent/rules/archive/versioning.yaml +5 -5
  85. package/.agent/rules/data/build-systems.yaml +2 -2
  86. package/.agent/rules/modules/agent-delegation.yaml +2 -2
  87. package/.agent/rules/modules/edit-verification.yaml +1 -1
  88. package/.agent/rules/modules/git-workflow.yaml +1 -1
  89. package/.agent/rules/modules/language.yaml +1 -1
  90. package/.agent/rules/modules/online-research.yaml +1 -1
  91. package/.agent/rules/modules/performance-optimization.yaml +2 -2
  92. package/.agent/rules/modules/quality.yaml +1 -1
  93. package/.agent/rules/modules/stop-conditions.yaml +1 -1
  94. package/.agent/rules/modules/terminal-safety.yaml +1 -1
  95. package/.agent/rules/modules/yagni.yaml +1 -1
  96. package/.agent/rules/validation-framework.md +1 -1
  97. package/.agent/skills/README.md +1 -1
  98. package/.agent/skills/_categories.yaml +2 -2
  99. package/.agent/skills/ai-ml/rag-patterns/META.yaml +2 -0
  100. package/.agent/skills/core/api-design/META.yaml +1 -1
  101. package/.agent/skills/core/authentication/META.yaml +1 -1
  102. package/.agent/skills/core/error-handling/META.yaml +1 -1
  103. package/.agent/skills/core/logging/META.yaml +1 -1
  104. package/.agent/skills/core/observability/META.yaml +1 -1
  105. package/.agent/skills/core/security/META.yaml +1 -1
  106. package/.agent/skills/core/security/SKILL.md +1 -1
  107. package/.agent/skills/cross-cutting/accessibility/META.yaml +1 -1
  108. package/.agent/skills/cross-cutting/audit-pro/META.yaml +9 -1
  109. package/.agent/skills/cross-cutting/audit-pro/SKILL.md +61 -5
  110. package/.agent/skills/cross-cutting/bun/META.yaml +17 -8
  111. package/.agent/skills/cross-cutting/bun/SKILL.md +1 -1
  112. package/.agent/skills/cross-cutting/coding-rules/META.yaml +1 -1
  113. package/.agent/skills/cross-cutting/database/META.yaml +42 -1
  114. package/.agent/skills/cross-cutting/database/SKILL.md +44 -628
  115. package/.agent/skills/cross-cutting/database/references/nosql-patterns.md +194 -0
  116. package/.agent/skills/cross-cutting/database/references/orms-patterns.md +278 -0
  117. package/.agent/skills/cross-cutting/database/references/postgresql.md +144 -0
  118. package/.agent/skills/cross-cutting/deno/META.yaml +19 -10
  119. package/.agent/skills/cross-cutting/deno/SKILL.md +1 -1
  120. package/.agent/skills/cross-cutting/domyh-design/META.yaml +1 -1
  121. package/.agent/skills/cross-cutting/domyh-design/data/desktop-colors.yaml +1 -1
  122. package/.agent/skills/cross-cutting/electron/SKILL.md +15 -616
  123. package/.agent/skills/cross-cutting/electron/references/ipc-testing.md +114 -0
  124. package/.agent/skills/cross-cutting/electron/references/native-integrations.md +216 -0
  125. package/.agent/skills/cross-cutting/electron/references/performance-accessibility.md +118 -0
  126. package/.agent/skills/cross-cutting/electron/references/updates-persistence.md +165 -0
  127. package/.agent/skills/cross-cutting/seo/META.yaml +1 -1
  128. package/.agent/skills/cross-cutting/skill-creator/META.yaml +37 -0
  129. package/.agent/skills/cross-cutting/skill-creator/SKILL.md +163 -0
  130. package/.agent/skills/cross-cutting/skill-creator/references/patterns.md +58 -0
  131. package/.agent/skills/cross-cutting/skill-creator/references/schema-v2.md +44 -0
  132. package/.agent/skills/cross-cutting/sql/META.yaml +1 -1
  133. package/.agent/skills/cross-cutting/sql/SKILL.md +1 -1
  134. package/.agent/skills/cross-cutting/tailwind/META.yaml +1 -1
  135. package/.agent/skills/cross-cutting/tailwind/SKILL.md +1 -1
  136. package/.agent/skills/cross-cutting/tdd-workflow/META.yaml +1 -1
  137. package/.agent/skills/cross-cutting/testing/META.yaml +7 -1
  138. package/.agent/skills/cross-cutting/testing/SKILL.md +1 -1
  139. package/.agent/skills/cross-cutting/testing/data/frameworks.yaml +1 -1
  140. package/.agent/skills/cross-cutting/web-perf/META.yaml +1 -1
  141. package/.agent/skills/cross-cutting/web-perf/SKILL.md +1 -1
  142. package/.agent/skills/devops/aws/META.yaml +1 -1
  143. package/.agent/skills/devops/aws/SKILL.md +101 -16
  144. package/.agent/skills/devops/azure/SKILL.md +96 -30
  145. package/.agent/skills/devops/ci-cd/META.yaml +1 -1
  146. package/.agent/skills/devops/ci-cd/SKILL.md +114 -8
  147. package/.agent/skills/devops/docker/META.yaml +1 -1
  148. package/.agent/skills/devops/docker/SKILL.md +96 -8
  149. package/.agent/skills/devops/gcp/SKILL.md +106 -30
  150. package/.agent/skills/devops/kubernetes/META.yaml +1 -1
  151. package/.agent/skills/devops/kubernetes/SKILL.md +125 -8
  152. package/.agent/skills/frameworks/angular/META.yaml +1 -1
  153. package/.agent/skills/frameworks/angular/SKILL.md +1 -1
  154. package/.agent/skills/frameworks/flutter/META.yaml +1 -1
  155. package/.agent/skills/frameworks/flutter/SKILL.md +1 -1
  156. package/.agent/skills/frameworks/nextjs/META.yaml +1 -1
  157. package/.agent/skills/frameworks/nextjs/SKILL.md +1 -1
  158. package/.agent/skills/frameworks/nuxt/META.yaml +1 -1
  159. package/.agent/skills/frameworks/nuxt/SKILL.md +1 -1
  160. package/.agent/skills/frameworks/react/META.yaml +1 -1
  161. package/.agent/skills/frameworks/react/SKILL.md +24 -1
  162. package/.agent/skills/frameworks/react-native/META.yaml +1 -1
  163. package/.agent/skills/frameworks/react-native/SKILL.md +1 -1
  164. package/.agent/skills/frameworks/svelte/META.yaml +1 -1
  165. package/.agent/skills/frameworks/svelte/SKILL.md +1 -1
  166. package/.agent/skills/frameworks/vue/META.yaml +1 -1
  167. package/.agent/skills/frameworks/vue/SKILL.md +1 -1
  168. package/.agent/skills/index.json +2 -2
  169. package/.agent/skills/languages/asm/META.yaml +1 -1
  170. package/.agent/skills/languages/asm/SKILL.md +27 -436
  171. package/.agent/skills/languages/asm/references/advanced-architectures.md +191 -0
  172. package/.agent/skills/languages/asm/references/build-structure.md +150 -0
  173. package/.agent/skills/languages/asm/references/simd-programming.md +92 -0
  174. package/.agent/skills/languages/c/META.yaml +1 -1
  175. package/.agent/skills/languages/c/SKILL.md +14 -356
  176. package/.agent/skills/languages/c/references/data-structures.md +63 -0
  177. package/.agent/skills/languages/c/references/memory-management.md +74 -0
  178. package/.agent/skills/languages/c/references/platform-headers.md +230 -0
  179. package/.agent/skills/languages/clojure/META.yaml +1 -1
  180. package/.agent/skills/languages/clojure/SKILL.md +1 -1
  181. package/.agent/skills/languages/cpp/META.yaml +1 -1
  182. package/.agent/skills/languages/cpp/SKILL.md +22 -753
  183. package/.agent/skills/languages/cpp/references/headers-optimization.md +229 -0
  184. package/.agent/skills/languages/cpp/references/memory-concurrency.md +85 -0
  185. package/.agent/skills/languages/cpp/references/modern-cpp-features.md +126 -0
  186. package/.agent/skills/languages/cpp/references/platform-headers.md +202 -0
  187. package/.agent/skills/languages/cpp/references/stl-containers.md +57 -0
  188. package/.agent/skills/languages/crystal/META.yaml +1 -1
  189. package/.agent/skills/languages/crystal/SKILL.md +1 -1
  190. package/.agent/skills/languages/csharp/META.yaml +1 -1
  191. package/.agent/skills/languages/csharp/SKILL.md +1 -1
  192. package/.agent/skills/languages/elixir/META.yaml +1 -1
  193. package/.agent/skills/languages/elixir/SKILL.md +1 -1
  194. package/.agent/skills/languages/fsharp/META.yaml +1 -1
  195. package/.agent/skills/languages/fsharp/SKILL.md +1 -1
  196. package/.agent/skills/languages/go/META.yaml +1 -1
  197. package/.agent/skills/languages/go/SKILL.md +1 -1
  198. package/.agent/skills/languages/haskell/META.yaml +1 -1
  199. package/.agent/skills/languages/haskell/SKILL.md +1 -1
  200. package/.agent/skills/languages/java/META.yaml +1 -1
  201. package/.agent/skills/languages/java/SKILL.md +1 -1
  202. package/.agent/skills/languages/javascript/META.yaml +1 -1
  203. package/.agent/skills/languages/javascript/SKILL.md +1 -1
  204. package/.agent/skills/languages/julia/META.yaml +1 -1
  205. package/.agent/skills/languages/julia/SKILL.md +1 -1
  206. package/.agent/skills/languages/kotlin/META.yaml +1 -1
  207. package/.agent/skills/languages/kotlin/SKILL.md +1 -1
  208. package/.agent/skills/languages/lua/META.yaml +1 -1
  209. package/.agent/skills/languages/lua/SKILL.md +3 -3
  210. package/.agent/skills/languages/nim/META.yaml +1 -1
  211. package/.agent/skills/languages/nim/SKILL.md +1 -1
  212. package/.agent/skills/languages/ocaml/META.yaml +1 -1
  213. package/.agent/skills/languages/ocaml/SKILL.md +1 -1
  214. package/.agent/skills/languages/perl/META.yaml +1 -1
  215. package/.agent/skills/languages/perl/SKILL.md +1 -1
  216. package/.agent/skills/languages/php/META.yaml +1 -1
  217. package/.agent/skills/languages/php/SKILL.md +1 -1
  218. package/.agent/skills/languages/python/META.yaml +1 -1
  219. package/.agent/skills/languages/python/SKILL.md +1 -1
  220. package/.agent/skills/languages/r/META.yaml +1 -1
  221. package/.agent/skills/languages/r/SKILL.md +1 -1
  222. package/.agent/skills/languages/ruby/META.yaml +1 -1
  223. package/.agent/skills/languages/ruby/SKILL.md +1 -1
  224. package/.agent/skills/languages/rust/META.yaml +1 -1
  225. package/.agent/skills/languages/rust/SKILL.md +1 -1
  226. package/.agent/skills/languages/scala/META.yaml +1 -1
  227. package/.agent/skills/languages/scala/SKILL.md +1 -1
  228. package/.agent/skills/languages/solidity/META.yaml +1 -1
  229. package/.agent/skills/languages/solidity/SKILL.md +1 -1
  230. package/.agent/skills/languages/swift/META.yaml +1 -1
  231. package/.agent/skills/languages/swift/SKILL.md +1 -1
  232. package/.agent/skills/languages/typescript/META.yaml +19 -1
  233. package/.agent/skills/languages/typescript/SKILL.md +23 -1
  234. package/.agent/skills/languages/zig/META.yaml +1 -1
  235. package/.agent/skills/languages/zig/SKILL.md +1 -1
  236. package/.agent/templates/README.md +2 -2
  237. package/.agent/templates/chains/feature/step1-requirements.md +76 -0
  238. package/.agent/templates/chains/feature/step2-design.md +75 -0
  239. package/.agent/templates/chains/feature/step3-planning.md +81 -0
  240. package/.agent/templates/chains/feature/step4-implementation.md +74 -0
  241. package/.agent/templates/chains/feature/step5-testing.md +81 -0
  242. package/.agent/templates/debug-report.md +1 -1
  243. package/.agent/templates/deploy-plan.md +1 -1
  244. package/.agent/templates/doc-template.md +1 -1
  245. package/.agent/templates/feature-lifecycle.md +53 -0
  246. package/.agent/templates/index.yaml +53 -2
  247. package/.agent/templates/migrate-plan.md +1 -1
  248. package/.agent/templates/phase-template.md +1 -1
  249. package/.agent/templates/tasks/audit.yaml +1 -1
  250. package/.agent/templates/tasks/bug_fix.yaml +1 -1
  251. package/.agent/templates/tasks/code_implementation.yaml +1 -1
  252. package/.agent/templates/tasks/feature_development.yaml +89 -0
  253. package/.agent/templates/tasks/refactor.yaml +1 -1
  254. package/.agent/templates/test-report.md +1 -1
  255. package/.agent/workflows/doctor.md +124 -0
  256. package/.agent/workflows/feature.md +130 -0
  257. package/.agent/workflows/help.md +7 -5
  258. package/dist/constants.d.ts +1 -1
  259. package/dist/constants.js +1 -1
  260. package/package.json +2 -2
@@ -1,16 +1,16 @@
1
- ---
1
+ ---
2
2
  name: c
3
3
  detect: ["*.c", "*.h", "Makefile", "CMakeLists.txt"]
4
- version: "6.2.6"
4
+ version: "6.2.7"
5
5
  category: language
6
6
  tier: 1
7
7
  ---
8
8
 
9
- # C Language Patterns DOMYH Awesome Code
9
+ # C Language Patterns DOMYH Awesome Code
10
10
 
11
- > Pure C (ISO C23) development patterns NOT C++
11
+ > Pure C (ISO C23) development patterns NOT C++
12
12
 
13
- ## Language Identification
13
+ ## 🔍 Language Identification
14
14
 
15
15
  ```yaml
16
16
  # C vs C++ distinction (CRITICAL)
@@ -60,7 +60,7 @@ cpp_indicators: # Switch to C++ skill if detected
60
60
 
61
61
  ---
62
62
 
63
- ## 🔧 C23 New Features
63
+ ## 🆕 C23 New Features
64
64
 
65
65
  ### nullptr (replaces NULL)
66
66
 
@@ -261,144 +261,16 @@ free(copy);
261
261
 
262
262
  ---
263
263
 
264
- ## 🧠 Memory Management Patterns
265
-
266
- ### RAII Pattern (Resource Acquisition Is Initialization)
267
-
268
- ```c
269
- // ✅ Cleanup attribute (GCC/Clang extension, common in Linux kernel)
270
- #define AUTO_FREE __attribute__((cleanup(cleanup_free)))
271
-
272
- static void cleanup_free(void *p) {
273
- free(*(void **)p);
274
- }
275
-
276
- void process_data(void) {
277
- AUTO_FREE char *buf = malloc(1024);
278
- if (!buf) return;
279
-
280
- // buf automatically freed when function returns
281
- // No need for explicit free()
282
- }
283
- ```
284
-
285
- ### Error Handling with goto (Linux Kernel Style)
286
-
287
- ```c
288
- // ✅ Standard C pattern for resource cleanup
289
- int process_file(const char *path) {
290
- int ret = 0;
291
- FILE *fp = NULL;
292
- char *buf = NULL;
293
-
294
- fp = fopen(path, "r");
295
- if (!fp) {
296
- ret = -errno;
297
- goto out;
298
- }
299
-
300
- buf = malloc(BUFFER_SIZE);
301
- if (!buf) {
302
- ret = -ENOMEM;
303
- goto out_close;
304
- }
305
-
306
- // Do processing...
307
- if (some_error) {
308
- ret = -EINVAL;
309
- goto out_free;
310
- }
311
-
312
- // Success path
313
- ret = 0;
314
-
315
- out_free:
316
- free(buf);
317
- out_close:
318
- fclose(fp);
319
- out:
320
- return ret;
321
- }
322
- ```
323
-
324
- ### Memory Debugging
325
-
326
- ```bash
327
- # Valgrind (memory leak detection)
328
- valgrind --leak-check=full ./program
329
-
330
- # AddressSanitizer (compile-time)
331
- gcc -fsanitize=address -g program.c -o program
332
-
333
- # UndefinedBehaviorSanitizer
334
- gcc -fsanitize=undefined -g program.c -o program
335
- ```
336
-
337
- ---
338
-
339
- ## 🏗️ Data Structures
264
+ ## 📚 Deep-Dive References
340
265
 
341
- ### Struct Patterns
266
+ - **Memory Management** — malloc/free patterns, arena allocators, memory pools
267
+ → See [references/memory-management.md](references/memory-management.md)
342
268
 
343
- ```c
344
- // Opaque pointer pattern (information hiding)
345
- // In header file (user.h)
346
- typedef struct User User;
347
- User *user_create(const char *name);
348
- void user_destroy(User *user);
349
- const char *user_get_name(const User *user);
350
-
351
- // In implementation file (user.c)
352
- struct User {
353
- char *name;
354
- int id;
355
- // Private implementation details
356
- };
357
-
358
- User *user_create(const char *name) {
359
- User *u = malloc(sizeof(*u));
360
- if (!u) return NULL;
361
-
362
- u->name = strdup(name);
363
- if (!u->name) {
364
- free(u);
365
- return NULL;
366
- }
367
- u->id = generate_id();
368
- return u;
369
- }
370
-
371
- void user_destroy(User *user) {
372
- if (user) {
373
- free(user->name);
374
- free(user);
375
- }
376
- }
377
- ```
269
+ - **Data Structures** — Linked lists, hash maps, ring buffers in C
270
+ See [references/data-structures.md](references/data-structures.md)
378
271
 
379
- ### Flexible Array Member (FAM)
380
-
381
- ```c
382
- // ✅ C99+ pattern for variable-length data
383
- struct Message {
384
- size_t length;
385
- uint32_t type;
386
- char data[]; // Flexible array member (MUST be last)
387
- };
388
-
389
- struct Message *create_message(const char *text) {
390
- size_t len = strlen(text) + 1;
391
- struct Message *msg = malloc(sizeof(*msg) + len);
392
- if (!msg) return NULL;
393
-
394
- msg->length = len;
395
- msg->type = MSG_TYPE_TEXT;
396
- memcpy(msg->data, text, len);
397
- return msg;
398
- }
399
- ```
400
-
401
- ---
272
+ - **Platform Headers** Windows/POSIX specifics, \_REENTRANT, signal handling
273
+ → See [references/platform-headers.md](references/platform-headers.md)
402
274
 
403
275
  ## 🔒 Security Best Practices
404
276
 
@@ -516,220 +388,6 @@ endif()
516
388
 
517
389
  ---
518
390
 
519
- ## ⚠️ Platform-Specific Headers (CRITICAL)
520
-
521
- ### Windows Headers Conflicts
522
-
523
- > **CRITICAL**: Windows headers have many conflicts. Follow this order exactly!
524
-
525
- #### 1. Include Order (winsock2.h BEFORE windows.h)
526
-
527
- ```c
528
- // ✅ CORRECT ORDER - winsock2.h MUST come before windows.h
529
- #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff
530
- #define NOMINMAX // Prevent min/max macros (for C++ compat)
531
- #define STRICT // Enable strict type checking
532
- #define UNICODE // Use Unicode APIs
533
- #define _UNICODE
534
-
535
- #include <winsock2.h> // 1st - Winsock 2.0
536
- #include <ws2tcpip.h> // 2nd - TCP/IP extensions
537
- #include <windows.h> // 3rd - Windows API
538
-
539
- #pragma comment(lib, "ws2_32.lib") // Link Winsock library
540
-
541
- // ❌ WRONG - causes redefinition errors!
542
- #include <windows.h> // includes winsock.h (1.1)
543
- #include <winsock2.h> // conflicts with winsock.h!
544
- ```
545
-
546
- #### 2. Essential Macros
547
-
548
- ```c
549
- // Define BEFORE any Windows includes (in pch.h or first in source)
550
- #ifndef WIN32_LEAN_AND_MEAN
551
- #define WIN32_LEAN_AND_MEAN // Excludes: Cryptography, DDE, RPC, Shell, Winsock 1.1
552
- #endif
553
-
554
- #ifndef STRICT
555
- #define STRICT // Strict type checking for HANDLE types
556
- #endif
557
-
558
- #include <windows.h>
559
- ```
560
-
561
- #### 3. Windows Socket Initialization
562
-
563
- ```c
564
- #include <winsock2.h>
565
- #include <ws2tcpip.h>
566
-
567
- int init_winsock(void) {
568
- WSADATA wsaData;
569
- int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
570
- if (result != 0) {
571
- fprintf(stderr, "WSAStartup failed: %d\n", result);
572
- return -1;
573
- }
574
- return 0;
575
- }
576
-
577
- void cleanup_winsock(void) {
578
- WSACleanup();
579
- }
580
- ```
581
-
582
- ### Windows Headers Quick Reference
583
-
584
- | Header | Purpose | Notes |
585
- | -------------- | ------------------- | -------------------------------- |
586
- | `<windows.h>` | Core Windows API | Use with WIN32_LEAN_AND_MEAN |
587
- | `<winsock2.h>` | Sockets (Winsock 2) | MUST include BEFORE windows.h |
588
- | `<ws2tcpip.h>` | TCP/IP, getaddrinfo | Include after winsock2.h |
589
- | `<process.h>` | Process control | \_beginthreadex, \_getpid |
590
- | `<io.h>` | Low-level I/O | \_open, \_read, \_write, \_close |
591
- | `<direct.h>` | Directory | \_mkdir, \_rmdir, \_getcwd |
592
- | `<conio.h>` | Console I/O | \_getch, \_kbhit |
593
-
594
- ---
595
-
596
- ### Linux/POSIX Headers
597
-
598
- #### 1. Feature Test Macros (Define FIRST)
599
-
600
- ```c
601
- // Define BEFORE any system headers!
602
- #define _GNU_SOURCE // GNU extensions (Linux-specific)
603
- #define _POSIX_C_SOURCE 200809L // POSIX.1-2008 compliance
604
- #define _REENTRANT // Thread-safe libc functions
605
- #define _XOPEN_SOURCE 700 // X/Open SUSv4 + POSIX 2008
606
-
607
- #include <stdio.h>
608
- #include <stdlib.h>
609
- #include <unistd.h>
610
- #include <pthread.h>
611
- ```
612
-
613
- #### 2. Signal Handling with Threads (Critical)
614
-
615
- ```c
616
- #include <pthread.h>
617
- #include <signal.h>
618
- #include <stdio.h>
619
-
620
- volatile sig_atomic_t shutdown_flag = 0;
621
-
622
- // ✅ Block signals in worker threads, handle in dedicated thread
623
- int main(void) {
624
- sigset_t set;
625
- sigemptyset(&set);
626
- sigaddset(&set, SIGINT);
627
- sigaddset(&set, SIGTERM);
628
-
629
- // Block signals in main thread (inherited by child threads)
630
- pthread_sigmask(SIG_BLOCK, &set, NULL);
631
-
632
- // Create worker threads (they inherit blocked signals)
633
- pthread_t worker;
634
- pthread_create(&worker, NULL, worker_func, NULL);
635
-
636
- // Handle signals in main thread with sigwait
637
- int sig;
638
- while (sigwait(&set, &sig) == 0) {
639
- if (sig == SIGINT || sig == SIGTERM) {
640
- shutdown_flag = 1;
641
- break;
642
- }
643
- }
644
-
645
- pthread_join(worker, NULL);
646
- return 0;
647
- }
648
-
649
- // ❌ AVOID: Signal handlers with threads (race conditions!)
650
- ```
651
-
652
- #### 3. Common POSIX Headers
653
-
654
- | Header | Purpose | Key Functions |
655
- | ---------------- | ---------------- | ----------------------------------- |
656
- | `<unistd.h>` | POSIX API | read, write, close, fork, exec |
657
- | `<pthread.h>` | Threads | pthread*create, pthread_mutex*\* |
658
- | `<signal.h>` | Signals | sigaction, sigwait, pthread_sigmask |
659
- | `<fcntl.h>` | File control | open, fcntl, O\_\* flags |
660
- | `<sys/types.h>` | Type definitions | pid_t, size_t, ssize_t |
661
- | `<sys/socket.h>` | Sockets | socket, bind, listen, accept |
662
- | `<netinet/in.h>` | Internet addr | sockaddr_in, htons, ntohs |
663
- | `<arpa/inet.h>` | IP conversion | inet_pton, inet_ntop |
664
- | `<sys/stat.h>` | File status | stat, fstat, mkdir |
665
- | `<sys/mman.h>` | Memory mapping | mmap, munmap, mprotect |
666
- | `<dlfcn.h>` | Dynamic loading | dlopen, dlsym, dlclose |
667
- | `<errno.h>` | Error codes | errno, ENOENT, EINVAL |
668
- | `<dirent.h>` | Directory ops | opendir, readdir, closedir |
669
-
670
- ---
671
-
672
- ### Cross-Platform C Code
673
-
674
- ```c
675
- // Platform detection
676
- #if defined(_WIN32) || defined(_WIN64)
677
- #define PLATFORM_WINDOWS 1
678
- #elif defined(__linux__)
679
- #define PLATFORM_LINUX 1
680
- #elif defined(__APPLE__)
681
- #define PLATFORM_MACOS 1
682
- #else
683
- #define PLATFORM_UNIX 1
684
- #endif
685
-
686
- // Platform-specific includes
687
- #ifdef PLATFORM_WINDOWS
688
- #define WIN32_LEAN_AND_MEAN
689
- #include <windows.h>
690
- #include <winsock2.h>
691
- #include <ws2tcpip.h>
692
- #pragma comment(lib, "ws2_32.lib")
693
- #else
694
- #include <unistd.h>
695
- #include <sys/socket.h>
696
- #include <netinet/in.h>
697
- #include <pthread.h>
698
- #include <errno.h>
699
- #endif
700
-
701
- // Cross-platform sleep
702
- static inline void sleep_ms(unsigned int ms) {
703
- #ifdef PLATFORM_WINDOWS
704
- Sleep(ms);
705
- #else
706
- usleep(ms * 1000);
707
- #endif
708
- }
709
-
710
- // Cross-platform thread type
711
- #ifdef PLATFORM_WINDOWS
712
- typedef HANDLE thread_t;
713
- typedef DWORD thread_ret_t;
714
- #else
715
- typedef pthread_t thread_t;
716
- typedef void* thread_ret_t;
717
- #endif
718
-
719
- // Cross-platform socket type
720
- #ifdef PLATFORM_WINDOWS
721
- typedef SOCKET socket_t;
722
- #define INVALID_SOCKET_VAL INVALID_SOCKET
723
- #define close_socket(s) closesocket(s)
724
- #else
725
- typedef int socket_t;
726
- #define INVALID_SOCKET_VAL (-1)
727
- #define close_socket(s) close(s)
728
- #endif
729
- ```
730
-
731
- ---
732
-
733
391
  ## ✅ Production Checklist
734
392
 
735
393
  - [ ] No memory leaks (Valgrind clean)
@@ -745,4 +403,4 @@ static inline void sleep_ms(unsigned int ms) {
745
403
 
746
404
  ---
747
405
 
748
- _DOMYH Awesome Code C Language (ISO C23) 2025-2026_
406
+ _DOMYH Awesome Code C Language (ISO C23) 2025-2026_
@@ -0,0 +1,63 @@
1
+ ## 🏗️ Data Structures
2
+
3
+ ### Struct Patterns
4
+
5
+ ```c
6
+ // ✅ Opaque pointer pattern (information hiding)
7
+ // In header file (user.h)
8
+ typedef struct User User;
9
+ User *user_create(const char *name);
10
+ void user_destroy(User *user);
11
+ const char *user_get_name(const User *user);
12
+
13
+ // In implementation file (user.c)
14
+ struct User {
15
+ char *name;
16
+ int id;
17
+ // Private implementation details
18
+ };
19
+
20
+ User *user_create(const char *name) {
21
+ User *u = malloc(sizeof(*u));
22
+ if (!u) return NULL;
23
+
24
+ u->name = strdup(name);
25
+ if (!u->name) {
26
+ free(u);
27
+ return NULL;
28
+ }
29
+ u->id = generate_id();
30
+ return u;
31
+ }
32
+
33
+ void user_destroy(User *user) {
34
+ if (user) {
35
+ free(user->name);
36
+ free(user);
37
+ }
38
+ }
39
+ ```
40
+
41
+ ### Flexible Array Member (FAM)
42
+
43
+ ```c
44
+ // ✅ C99+ pattern for variable-length data
45
+ struct Message {
46
+ size_t length;
47
+ uint32_t type;
48
+ char data[]; // Flexible array member (MUST be last)
49
+ };
50
+
51
+ struct Message *create_message(const char *text) {
52
+ size_t len = strlen(text) + 1;
53
+ struct Message *msg = malloc(sizeof(*msg) + len);
54
+ if (!msg) return NULL;
55
+
56
+ msg->length = len;
57
+ msg->type = MSG_TYPE_TEXT;
58
+ memcpy(msg->data, text, len);
59
+ return msg;
60
+ }
61
+ ```
62
+
63
+ ---
@@ -0,0 +1,74 @@
1
+ ## 📦  Memory Management Patterns
2
+
3
+ ### RAII Pattern (Resource Acquisition Is Initialization)
4
+
5
+ ```c
6
+ // ✅ Cleanup attribute (GCC/Clang extension, common in Linux kernel)
7
+ #define AUTO_FREE __attribute__((cleanup(cleanup_free)))
8
+
9
+ static void cleanup_free(void *p) {
10
+ free(*(void **)p);
11
+ }
12
+
13
+ void process_data(void) {
14
+ AUTO_FREE char *buf = malloc(1024);
15
+ if (!buf) return;
16
+
17
+ // buf automatically freed when function returns
18
+ // No need for explicit free()
19
+ }
20
+ ```
21
+
22
+ ### Error Handling with goto (Linux Kernel Style)
23
+
24
+ ```c
25
+ // ✅ Standard C pattern for resource cleanup
26
+ int process_file(const char *path) {
27
+ int ret = 0;
28
+ FILE *fp = NULL;
29
+ char *buf = NULL;
30
+
31
+ fp = fopen(path, "r");
32
+ if (!fp) {
33
+ ret = -errno;
34
+ goto out;
35
+ }
36
+
37
+ buf = malloc(BUFFER_SIZE);
38
+ if (!buf) {
39
+ ret = -ENOMEM;
40
+ goto out_close;
41
+ }
42
+
43
+ // Do processing...
44
+ if (some_error) {
45
+ ret = -EINVAL;
46
+ goto out_free;
47
+ }
48
+
49
+ // Success path
50
+ ret = 0;
51
+
52
+ out_free:
53
+ free(buf);
54
+ out_close:
55
+ fclose(fp);
56
+ out:
57
+ return ret;
58
+ }
59
+ ```
60
+
61
+ ### Memory Debugging
62
+
63
+ ```bash
64
+ # Valgrind (memory leak detection)
65
+ valgrind --leak-check=full ./program
66
+
67
+ # AddressSanitizer (compile-time)
68
+ gcc -fsanitize=address -g program.c -o program
69
+
70
+ # UndefinedBehaviorSanitizer
71
+ gcc -fsanitize=undefined -g program.c -o program
72
+ ```
73
+
74
+ ---