From ea3c2c50192cc62299b4ebf7a5f7906a29171cc9 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Tue, 10 Jun 2025 22:15:34 +0200 Subject: [PATCH] Update doc --- README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 068f0f17..c4812be2 100644 --- a/README.md +++ b/README.md @@ -139,8 +139,8 @@ You can read or write your full and complex data structure into [JSON](https://e M\*LIB is distributed under BSD-2 simplified license. It is strongly advised not to read the source to know how to use the library -as the code is quite complex and uses a lot of tricks -but rather read the examples. +as the code is quite complex and uses a lot of tricks. +You should rather read the examples. In this documentation, * _shall_ will be used to indicate a user constraint that is @@ -149,6 +149,22 @@ mandatory to follow under penalty of undefined behavior. All pointers expected by the functions of the library shall expect non-null argument except if indicated. +## Key points + +* Genericity Mechanism through code generation by macro-base approaches while keeping code size reasonable, +* Minimum supported C Standard is C99, +* Header only library (easier to integrate), +* Performance: M\*LIB is highly optimized wut =h Minimal Runtime Overheader in Release mode, +* Type Safety: Compiler catches type mismatches. +* Runtime errors: Assertion are enabled in Debug mode and check for contract violiation and runtime errors are enabled for robustness in debug mode, +* High focus on homogeneous API design and ease of use, +* Near 100% coverage in instruction and decision by the test suite, +* Actively maintained library, +* Can be used fully without any macro usage outside of its code generation section, +* Provide all the standard containers (vectors, lists, hash maps, sets, queues, etc.) and algorithms (sort, search) and even more, +* Fully custimisable memory allocator, +* Can use _Generic keyword for uniform usage of the operators on any registered type. + ## Components The following headers define containers that don't require the user structure to be modified: