├── .github └── FUNDING.yml ├── CONTRIBUTING.md ├── LICENSE └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: oz123 # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guide # 2 | 3 | First of all, thank for your contribution! I can't manage this whole thing 4 | alone, and I welcome pull requests. To make sure that we're all on the same 5 | page, here are some guidelines to follow for submitting pull requests for this 6 | list. 7 | 8 | ## What would be great ## 9 | 10 | Obviously, it's your choice what you want to contribute - or not 11 | contribute. However, if you're looking for something that would help awesome-c, 12 | check the current issues, especially those tagged with 'help wanted'. Pull 13 | requests addressing these are particularly great! 14 | 15 | Additionally, if you found (or wrote!) a useful C tool, library, or anything 16 | else, please contribute it! Even if it falls short, we would be happy to help 17 | you improve, possibly by contributing ourselves. 18 | 19 | Lastly, if you notice that something is dead, or of poor quality, we would love 20 | contributions that _remove_ anything like that. We can't maintain the entire 21 | list without your help, and would appreciate more vigilant eyes and minds! 22 | 23 | ## The scope of this list ## 24 | 25 | As per the name, ``awesome-c`` is about the C programming language. 26 | Specifically, any of the following are in scope: 27 | 28 | * Libraries and frameworks for C 29 | * Tutorials, books or other reference material for or about C 30 | * Tooling designed for use with C (even if it's not written in C) 31 | 32 | The following are expressly _not_ in scope for this list: 33 | 34 | * Scripting languages that can be embedded into C 35 | 36 | The following _may_ be in scope, but not necessarily: 37 | 38 | * Programs written in C, but not specifically for work in C 39 | 40 | Avoiding scope creep is important, and such avoidance begins with you. If in 41 | doubt, keep in mind Antoine de Saint-Exupéry's famous statement: 42 | 43 | _''Perfection is attained not when there is nothing left to add, but when there 44 | is nothing left to take away.''_ 45 | 46 | ## How to contribute ## 47 | 48 | Now for the mechanics of the process, and some do's and don't's. 49 | 50 | ### Ensure that code you link to is open-source ### 51 | 52 | This is highly important - this list *only* contains open-source things! 53 | If you are sending a pull request linking to code, ensure it is licensed under 54 | an open-source license. This includes, but is not limited to: 55 | 56 | - Anything on the [OSI license list][1] 57 | - Creative Commons Zero 58 | 59 | If you're not sure, better to ask first. If it's not on the list above 60 | especially. 61 | 62 | ### Ensure that non-code you link to comes from non-evil sources ### 63 | 64 | While there is no open-source requirement for non-code things, including 65 | documentation, tutorials, learning resources, and so forth, it is essential that 66 | it comes from sources which aren't evil. Things which are evil include, but are 67 | not limited to: 68 | 69 | * Amazon 70 | * Anything behind a paywall 71 | * Anything written by bigots 72 | 73 | If in doubt, ask! 74 | 75 | ### Maintain a level of quality ### 76 | 77 | While it isn't possible to curate everything on the list, and occasionally poor 78 | things will slip through, it's essential that only good stuff ends up on this 79 | list. To this end, use the following questions as a guide to whether something 80 | is good: 81 | 82 | 1. Does it contain documentation, both reference and tutorial? 83 | 1. Does it have its own dedicated page (not just a repo)? 84 | 1. Is this something you would use, or have used in the past, and found it good? 85 | 1. Is it being regularly maintained? Are no issues rotting? Has it been updated in 86 | the last few months? 87 | 1. Does it have unit tests, CI, or any other code quality checks? Do they pass? 88 | Are they thorough? 89 | 1. If code, is this work under an SPDX license? If it isn't, is it something 90 | fairly similar to an SPDX license? 91 | 92 | The more of these questions have 'yes' answers, the more likely it is that 93 | whatever you're submitting is good. 94 | 95 | ### Indicate the license for anything you add clearly ### 96 | 97 | Ensure that you label licenses correctly. ``awesome-c`` now uses [SPDX][2] 98 | license labels, so please use those. If the license is weird or not on the list, 99 | label it as clearly as possible. Also check if the license is in use 100 | already - if it is, don't create another link to it. License links are named the 101 | same way as the license itself: if you want to link to the ``GPL-3.0-or-later`` 102 | license, you format the link as 103 | 104 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 105 | 106 | Sometimes, libraries or frameworks will contain documentation or code under 107 | different licenses to the library itself (such as tests or examples). There is 108 | no need to indicate their licenses in that case. However, if the program itself 109 | is what is being put on the list, *obviously* its license matters. 110 | 111 | ### Maintain alphabetical order within sections ### 112 | 113 | Pretty self-explanatory, really. Numbers are considered to be higher-ordered 114 | than anything else, and otherwise, lex order. 115 | 116 | ### Give a clear commit message ### 117 | 118 | The commit message should state clearly *what* you did (adding, removing, 119 | clarifying, etc.), with *what* (usually by giving the name of the entry), in the 120 | present continuous tense (i.e. 'adding' not 'added'). 121 | 122 | ### Keep to the same style as other entries 123 | 124 | This includes, but is not limited to: 125 | 126 | * The order of entries is: name with link, description, license link 127 | * Avoid starting descriptions with 'a', 'an' or 'the' 128 | * License link text should be backtick-wrapped 129 | * If something has a dedicated site, link to that in preference to a Github or 130 | other repo page 131 | 132 | Read some of the other entries to see how to format any new ones. 133 | 134 | [1]: https://opensource.org/licenses 135 | [2]: https://spdx.org/licenses/ 136 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Attribution-ShareAlike 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution-ShareAlike 4.0 International Public 58 | License 59 | 60 | By exercising the Licensed Rights (defined below), You accept and agree 61 | to be bound by the terms and conditions of this Creative Commons 62 | Attribution-ShareAlike 4.0 International Public License ("Public 63 | License"). To the extent this Public License may be interpreted as a 64 | contract, You are granted the Licensed Rights in consideration of Your 65 | acceptance of these terms and conditions, and the Licensor grants You 66 | such rights in consideration of benefits the Licensor receives from 67 | making the Licensed Material available under these terms and 68 | conditions. 69 | 70 | 71 | Section 1 -- Definitions. 72 | 73 | a. Adapted Material means material subject to Copyright and Similar 74 | Rights that is derived from or based upon the Licensed Material 75 | and in which the Licensed Material is translated, altered, 76 | arranged, transformed, or otherwise modified in a manner requiring 77 | permission under the Copyright and Similar Rights held by the 78 | Licensor. For purposes of this Public License, where the Licensed 79 | Material is a musical work, performance, or sound recording, 80 | Adapted Material is always produced where the Licensed Material is 81 | synched in timed relation with a moving image. 82 | 83 | b. Adapter's License means the license You apply to Your Copyright 84 | and Similar Rights in Your contributions to Adapted Material in 85 | accordance with the terms and conditions of this Public License. 86 | 87 | c. BY-SA Compatible License means a license listed at 88 | creativecommons.org/compatiblelicenses, approved by Creative 89 | Commons as essentially the equivalent of this Public License. 90 | 91 | d. Copyright and Similar Rights means copyright and/or similar rights 92 | closely related to copyright including, without limitation, 93 | performance, broadcast, sound recording, and Sui Generis Database 94 | Rights, without regard to how the rights are labeled or 95 | categorized. For purposes of this Public License, the rights 96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 97 | Rights. 98 | 99 | e. Effective Technological Measures means those measures that, in the 100 | absence of proper authority, may not be circumvented under laws 101 | fulfilling obligations under Article 11 of the WIPO Copyright 102 | Treaty adopted on December 20, 1996, and/or similar international 103 | agreements. 104 | 105 | f. Exceptions and Limitations means fair use, fair dealing, and/or 106 | any other exception or limitation to Copyright and Similar Rights 107 | that applies to Your use of the Licensed Material. 108 | 109 | g. License Elements means the license attributes listed in the name 110 | of a Creative Commons Public License. The License Elements of this 111 | Public License are Attribution and ShareAlike. 112 | 113 | h. Licensed Material means the artistic or literary work, database, 114 | or other material to which the Licensor applied this Public 115 | License. 116 | 117 | i. Licensed Rights means the rights granted to You subject to the 118 | terms and conditions of this Public License, which are limited to 119 | all Copyright and Similar Rights that apply to Your use of the 120 | Licensed Material and that the Licensor has authority to license. 121 | 122 | j. Licensor means the individual(s) or entity(ies) granting rights 123 | under this Public License. 124 | 125 | k. Share means to provide material to the public by any means or 126 | process that requires permission under the Licensed Rights, such 127 | as reproduction, public display, public performance, distribution, 128 | dissemination, communication, or importation, and to make material 129 | available to the public including in ways that members of the 130 | public may access the material from a place and at a time 131 | individually chosen by them. 132 | 133 | l. Sui Generis Database Rights means rights other than copyright 134 | resulting from Directive 96/9/EC of the European Parliament and of 135 | the Council of 11 March 1996 on the legal protection of databases, 136 | as amended and/or succeeded, as well as other essentially 137 | equivalent rights anywhere in the world. 138 | 139 | m. You means the individual or entity exercising the Licensed Rights 140 | under this Public License. Your has a corresponding meaning. 141 | 142 | 143 | Section 2 -- Scope. 144 | 145 | a. License grant. 146 | 147 | 1. Subject to the terms and conditions of this Public License, 148 | the Licensor hereby grants You a worldwide, royalty-free, 149 | non-sublicensable, non-exclusive, irrevocable license to 150 | exercise the Licensed Rights in the Licensed Material to: 151 | 152 | a. reproduce and Share the Licensed Material, in whole or 153 | in part; and 154 | 155 | b. produce, reproduce, and Share Adapted Material. 156 | 157 | 2. Exceptions and Limitations. For the avoidance of doubt, where 158 | Exceptions and Limitations apply to Your use, this Public 159 | License does not apply, and You do not need to comply with 160 | its terms and conditions. 161 | 162 | 3. Term. The term of this Public License is specified in Section 163 | 6(a). 164 | 165 | 4. Media and formats; technical modifications allowed. The 166 | Licensor authorizes You to exercise the Licensed Rights in 167 | all media and formats whether now known or hereafter created, 168 | and to make technical modifications necessary to do so. The 169 | Licensor waives and/or agrees not to assert any right or 170 | authority to forbid You from making technical modifications 171 | necessary to exercise the Licensed Rights, including 172 | technical modifications necessary to circumvent Effective 173 | Technological Measures. For purposes of this Public License, 174 | simply making modifications authorized by this Section 2(a) 175 | (4) never produces Adapted Material. 176 | 177 | 5. Downstream recipients. 178 | 179 | a. Offer from the Licensor -- Licensed Material. Every 180 | recipient of the Licensed Material automatically 181 | receives an offer from the Licensor to exercise the 182 | Licensed Rights under the terms and conditions of this 183 | Public License. 184 | 185 | b. Additional offer from the Licensor -- Adapted Material. 186 | Every recipient of Adapted Material from You 187 | automatically receives an offer from the Licensor to 188 | exercise the Licensed Rights in the Adapted Material 189 | under the conditions of the Adapter's License You apply. 190 | 191 | c. No downstream restrictions. You may not offer or impose 192 | any additional or different terms or conditions on, or 193 | apply any Effective Technological Measures to, the 194 | Licensed Material if doing so restricts exercise of the 195 | Licensed Rights by any recipient of the Licensed 196 | Material. 197 | 198 | 6. No endorsement. Nothing in this Public License constitutes or 199 | may be construed as permission to assert or imply that You 200 | are, or that Your use of the Licensed Material is, connected 201 | with, or sponsored, endorsed, or granted official status by, 202 | the Licensor or others designated to receive attribution as 203 | provided in Section 3(a)(1)(A)(i). 204 | 205 | b. Other rights. 206 | 207 | 1. Moral rights, such as the right of integrity, are not 208 | licensed under this Public License, nor are publicity, 209 | privacy, and/or other similar personality rights; however, to 210 | the extent possible, the Licensor waives and/or agrees not to 211 | assert any such rights held by the Licensor to the limited 212 | extent necessary to allow You to exercise the Licensed 213 | Rights, but not otherwise. 214 | 215 | 2. Patent and trademark rights are not licensed under this 216 | Public License. 217 | 218 | 3. To the extent possible, the Licensor waives any right to 219 | collect royalties from You for the exercise of the Licensed 220 | Rights, whether directly or through a collecting society 221 | under any voluntary or waivable statutory or compulsory 222 | licensing scheme. In all other cases the Licensor expressly 223 | reserves any right to collect such royalties. 224 | 225 | 226 | Section 3 -- License Conditions. 227 | 228 | Your exercise of the Licensed Rights is expressly made subject to the 229 | following conditions. 230 | 231 | a. Attribution. 232 | 233 | 1. If You Share the Licensed Material (including in modified 234 | form), You must: 235 | 236 | a. retain the following if it is supplied by the Licensor 237 | with the Licensed Material: 238 | 239 | i. identification of the creator(s) of the Licensed 240 | Material and any others designated to receive 241 | attribution, in any reasonable manner requested by 242 | the Licensor (including by pseudonym if 243 | designated); 244 | 245 | ii. a copyright notice; 246 | 247 | iii. a notice that refers to this Public License; 248 | 249 | iv. a notice that refers to the disclaimer of 250 | warranties; 251 | 252 | v. a URI or hyperlink to the Licensed Material to the 253 | extent reasonably practicable; 254 | 255 | b. indicate if You modified the Licensed Material and 256 | retain an indication of any previous modifications; and 257 | 258 | c. indicate the Licensed Material is licensed under this 259 | Public License, and include the text of, or the URI or 260 | hyperlink to, this Public License. 261 | 262 | 2. You may satisfy the conditions in Section 3(a)(1) in any 263 | reasonable manner based on the medium, means, and context in 264 | which You Share the Licensed Material. For example, it may be 265 | reasonable to satisfy the conditions by providing a URI or 266 | hyperlink to a resource that includes the required 267 | information. 268 | 269 | 3. If requested by the Licensor, You must remove any of the 270 | information required by Section 3(a)(1)(A) to the extent 271 | reasonably practicable. 272 | 273 | b. ShareAlike. 274 | 275 | In addition to the conditions in Section 3(a), if You Share 276 | Adapted Material You produce, the following conditions also apply. 277 | 278 | 1. The Adapter's License You apply must be a Creative Commons 279 | license with the same License Elements, this version or 280 | later, or a BY-SA Compatible License. 281 | 282 | 2. You must include the text of, or the URI or hyperlink to, the 283 | Adapter's License You apply. You may satisfy this condition 284 | in any reasonable manner based on the medium, means, and 285 | context in which You Share Adapted Material. 286 | 287 | 3. You may not offer or impose any additional or different terms 288 | or conditions on, or apply any Effective Technological 289 | Measures to, Adapted Material that restrict exercise of the 290 | rights granted under the Adapter's License You apply. 291 | 292 | 293 | Section 4 -- Sui Generis Database Rights. 294 | 295 | Where the Licensed Rights include Sui Generis Database Rights that 296 | apply to Your use of the Licensed Material: 297 | 298 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 299 | to extract, reuse, reproduce, and Share all or a substantial 300 | portion of the contents of the database; 301 | 302 | b. if You include all or a substantial portion of the database 303 | contents in a database in which You have Sui Generis Database 304 | Rights, then the database in which You have Sui Generis Database 305 | Rights (but not its individual contents) is Adapted Material, 306 | 307 | including for purposes of Section 3(b); and 308 | c. You must comply with the conditions in Section 3(a) if You Share 309 | all or a substantial portion of the contents of the database. 310 | 311 | For the avoidance of doubt, this Section 4 supplements and does not 312 | replace Your obligations under this Public License where the Licensed 313 | Rights include other Copyright and Similar Rights. 314 | 315 | 316 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 317 | 318 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 319 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 320 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 321 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 322 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 323 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 324 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 325 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 326 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 327 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 328 | 329 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 330 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 331 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 332 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 333 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 334 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 335 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 336 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 337 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 338 | 339 | c. The disclaimer of warranties and limitation of liability provided 340 | above shall be interpreted in a manner that, to the extent 341 | possible, most closely approximates an absolute disclaimer and 342 | waiver of all liability. 343 | 344 | 345 | Section 6 -- Term and Termination. 346 | 347 | a. This Public License applies for the term of the Copyright and 348 | Similar Rights licensed here. However, if You fail to comply with 349 | this Public License, then Your rights under this Public License 350 | terminate automatically. 351 | 352 | b. Where Your right to use the Licensed Material has terminated under 353 | Section 6(a), it reinstates: 354 | 355 | 1. automatically as of the date the violation is cured, provided 356 | it is cured within 30 days of Your discovery of the 357 | violation; or 358 | 359 | 2. upon express reinstatement by the Licensor. 360 | 361 | For the avoidance of doubt, this Section 6(b) does not affect any 362 | right the Licensor may have to seek remedies for Your violations 363 | of this Public License. 364 | 365 | c. For the avoidance of doubt, the Licensor may also offer the 366 | Licensed Material under separate terms or conditions or stop 367 | distributing the Licensed Material at any time; however, doing so 368 | will not terminate this Public License. 369 | 370 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 371 | License. 372 | 373 | 374 | Section 7 -- Other Terms and Conditions. 375 | 376 | a. The Licensor shall not be bound by any additional or different 377 | terms or conditions communicated by You unless expressly agreed. 378 | 379 | b. Any arrangements, understandings, or agreements regarding the 380 | Licensed Material not stated herein are separate from and 381 | independent of the terms and conditions of this Public License. 382 | 383 | 384 | Section 8 -- Interpretation. 385 | 386 | a. For the avoidance of doubt, this Public License does not, and 387 | shall not be interpreted to, reduce, limit, restrict, or impose 388 | conditions on any use of the Licensed Material that could lawfully 389 | be made without permission under this Public License. 390 | 391 | b. To the extent possible, if any provision of this Public License is 392 | deemed unenforceable, it shall be automatically reformed to the 393 | minimum extent necessary to make it enforceable. If the provision 394 | cannot be reformed, it shall be severed from this Public License 395 | without affecting the enforceability of the remaining terms and 396 | conditions. 397 | 398 | c. No term or condition of this Public License will be waived and no 399 | failure to comply consented to unless expressly agreed to by the 400 | Licensor. 401 | 402 | d. Nothing in this Public License constitutes or may be interpreted 403 | as a limitation upon, or waiver of, any privileges and immunities 404 | that apply to the Licensor or You, including from the legal 405 | processes of any jurisdiction or authority. 406 | 407 | 408 | ======================================================================= 409 | 410 | Creative Commons is not a party to its public 411 | licenses. Notwithstanding, Creative Commons may elect to apply one of 412 | its public licenses to material it publishes and in those instances 413 | will be considered the “Licensor.” The text of the Creative Commons 414 | public licenses is dedicated to the public domain under the CC0 Public 415 | Domain Dedication. Except for the limited purpose of indicating that 416 | material is shared under a Creative Commons public license or as 417 | otherwise permitted by the Creative Commons policies published at 418 | creativecommons.org/policies, Creative Commons does not authorize the 419 | use of the trademark "Creative Commons" or any other trademark or logo 420 | of Creative Commons without its prior written consent including, 421 | without limitation, in connection with any unauthorized modifications 422 | to any of its public licenses or any other arrangements, 423 | understandings, or agreements concerning use of licensed material. For 424 | the avoidance of doubt, this paragraph does not form part of the 425 | public licenses. 426 | 427 | Creative Commons may be contacted at creativecommons.org. 428 | 429 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome C # 2 | 3 | A curated list of C good stuff. This list contains *only* [open source][13] 4 | code (as defined by the linked Open Source Definition), and sellers who 5 | aren't evil for physical resources. 6 | 7 | This is released under a Creative Commons-Attribution-ShareAlike license, 8 | version 4 (SPDX code ``CC-BY-SA-4.0``). You can find its text in the LICENSE file. 9 | 10 | **An important note:** This project does *not* index anything C++-related; only 11 | pure C stuff is considered. 12 | 13 | **Note for contributors:** If you want to make a pull request, please read 14 | CONTRIBUTING.md first. 15 | 16 | ## Contents ## 17 | 18 | * [AI](#ai) 19 | * [Benchmarking](#benchmarking) 20 | * [Build Systems](#build-systems) 21 | * [Compilers](#compilers) 22 | * [Compression](#compression) 23 | * [Concurrency and Parallelism](#concurrency-and-parallelism) 24 | * [Crypto](#crypto) 25 | * [Database](#database) 26 | * [Data Structures](#data-structures) 27 | * [Debugging](#debugging) 28 | * [Documentation Generation](#documentation-generation) 29 | * [Editors](#editors) 30 | * [Embeddable Scripting Engines](#embeddable-scripting-engines) 31 | * [Frameworks](#frameworks) 32 | * [Game Programming](#game-programming) 33 | * [Graphics](#graphics) 34 | * [Graphical User Interface](#graphical-user-interface) 35 | * [Hashing](#hashing) 36 | * [Learning, Reference and Tutorials](#learning-reference-and-tutorials) 37 | * [Reference resources online](#reference-resources-online) 38 | * [Beginner resources online](#beginner-resources-online) 39 | * [Intermediate resources online](#intermediate-resources-online) 40 | * [Advanced resources online](#advanced-resources-online) 41 | * [Reference books](#reference-books) 42 | * [Beginner books](#beginner-books) 43 | * [Intermediate books](#intermediate-books) 44 | * [Advanced books](#advanced-books) 45 | * [Lexing and Parsing](#lexing-and-parsing) 46 | * [Memory Management](#memory-management) 47 | * [Multimedia](#multimedia) 48 | * [Networking and Internet](#networking-and-internet) 49 | * [Numerical](#numerical) 50 | * [Profiling](#profiling) 51 | * [Regex](#regex) 52 | * [Serialization](#serialization) 53 | * [Source Code Collections](#source-code-collections) 54 | * [Standard Libraries](#standard-libraries) 55 | * [Template Libraries](#template-libraries) 56 | * [String Manipulation](#string-manipulation) 57 | * [Structured File Processing](#structured-file-processing) 58 | * [CSV](#csv) 59 | * [JSON](#json) 60 | * [INI](#ini) 61 | * [Others](#others) 62 | * [XML](#xml) 63 | * [YAML](#yaml) 64 | * [Testing](#testing) 65 | * [Text Editor Extensions](#text-editor-extensions) 66 | * [Tools](#tools) 67 | * [Utilities](#utilities) 68 | * [Web Frameworks](#web-frameworks) 69 | * [Windows Environments](#windows-environments) 70 | 71 | ## AI ## 72 | 73 | Computer vision, neural nets, machine learning, and other similar things. 74 | Basically, if your university calls it AI, it lives here. 75 | 76 | * [ccv][195] - C-based/Cached/Core Computer Vision library; modern computer 77 | vision. [``BSD-3-Clause``][BSD-3-Clause] 78 | * [Cranium][525] - Portable, header-only ANN library in C99. [``MIT``][MIT] 79 | * [FANN][325] - Fast Artifical Neural Network library; an implementation of 80 | neural networks. [``GPL-2.0-only``][GPL-2.0-only] 81 | * [Genann][412] - Simple ANN in C89, without additional dependencies. [``Zlib``][Zlib] 82 | * [KANN][327] - Two-file ANN library. [``MIT``][MIT] 83 | * [LibDEEP][477] - Deep learning library. [``BSD-3-Clause``][BSD-3-Clause] 84 | * [m2cgen][610] - A CLI tool to transpile trained classic ML models into a native C code with zero dependencies. [``MIT``][MIT] 85 | * [sod][611] - An Embedded Computer Vision & Machine Learning Library. [``GPL-3.0-only``][GPL-3.0-only] 86 | 87 | ## Benchmarking ## 88 | 89 | Comparing the performance of various subsystems across different chip/system architectures. 90 | 91 | * [b63][553] - Light-weight micro-benchmarking tool for C. [``Apache-2.0``][Apache-2.0] 92 | 93 | ## Build Systems ## 94 | 95 | Tools that automate the building and testing of projects in C. 96 | 97 | * [Autotools][583] - Also known as the GNU build system (automake, autoconf, libtool...) 98 | is one of the most widely used build systems (configure && make). [GPL-1.0-or-later][335] 99 | * [Autotools project skeleton][584] - A simple autotools skeleton (template) to quickly bootstrap 100 | new projects. [``BSD-2-Clause``][BSD-2-Clause] 101 | * [CMake][329] - Cross-platform family of tools designed to build, package and test 102 | software. [``BSD-3-Clause``][BSD-3-Clause] 103 | * [GNU Make][324] - Tool which controls the generation of executables and other 104 | non-source files of a program. [``GPL-3.0-or-later``][GPL-3.0-or-later] 105 | * [Meson][368] - Extremely fast, user-friendly build system. Based on Ninja. [``Apache-2.0``][Apache-2.0] 106 | * [Premake][435] - Command-line utility which reads a scripted definition of a 107 | software project and uses it to generate project files for Visual Studio and 108 | GNU Make. Other targets are also being worked on. [``BSD-3-Clause``][BSD-3-Clause] 109 | * [SCons][521] - Software construction tool using Python. [``MIT``][MIT] 110 | * [xmake][271] - Cross-platform build utility. [``Apache-2.0``][Apache-2.0] 111 | * [zproject][420] - Project generator and build system support tool. [``MPL-2.0``][MPL-2.0] 112 | 113 | ## Compilers ## 114 | 115 | Compilers, as well as compiler- and compilation-related tooling. 116 | 117 | * [ccache][466] - Compiler cache designed to speed up recompilation. [``GPL-3.0-or-later``][GPL-3.0-or-later] 118 | * [Clang][38] - Compiler for LLVM. Supports C11. [``NCSA``][NCSA] 119 | * [cproc][574] - A C11 compiler using QBE as a backend. [``ISC``][ISC] 120 | * [distcc][452] - Program that allows builds to be distributed among several 121 | machines. [``GPL-2.0-or-later``][GPL-2.0-or-later] 122 | * [Firm][361] - Library that provides a graph-based intermediate 123 | representation, optimizations and assembly code generation suitable for use in 124 | compilers. Comes with an example C front-end under the same 125 | license. [``LGPL-2.1-only``][LGPL-2.1-only] 126 | * [GCC][40] - Provides a C compiler as part of its compiler set. Supports 127 | C11. [``GPL-3.0-or-later``][GPL-3.0-or-later] 128 | * [PCC][74] - Venerable compiler. Supports C99. [Various licenses][75], all 129 | open source. 130 | 131 | ## Compression ## 132 | 133 | * [blosc][445] - Extremely fast, multi-threaded, meta-compressor library. 134 | Various licenses, all open source. 135 | * [Brotli][24] - General-purpose lossless compression algorithm library. Has 136 | speeds comparable to DEFLATE, but much higher compression ratios. 137 | [``MIT``][MIT]. 138 | * [clzip][432] - C version of the high-quality data compressor [Lzip][433] (LZMA 139 | implementation). [``GPL-2.0-or-later``][GPL-2.0-or-later] 140 | * [CRoaring][481] - C implementation of [Roaring bitmaps][482]. [``Apache-2.0``][Apache-2.0] 141 | * [FiniteStateEntropy][2] - Two highly efficient compression codecs optimized 142 | for modern CPUs. [``BSD-2-Clause``][BSD-2-Clause] 143 | * [DENSITY][506] - Super-fast compression library. [``BSD-3-Clause``][BSD-3-Clause] 144 | * [heatshrink][514] - Data compression/decompression library for embedded and 145 | real-time systems. [``ISC``][ISC] 146 | * [fast\_zlib][533] - Improved zlib, which runs 2 to 10 times faster. 147 | [``BSD-3-Clause``][BSD-3-Clause] 148 | * [fastLZ][586] - Lightning-fast lossless compression library (LZ77 type). Embbedable on small target like ARM Cortex-M families. Source code directly embbedable on your project ( a pair of h/c files), no dynamic memory allocation. [``MIT``][MIT] 149 | * [huffandpuff][214] - Minimal Huffman encoder and decoder. Public domain. 150 | * [libzip][587] - C library for reading, creating and modifying zip archives. 151 | [``BSD-3-Clause``][BSD-3-Clause] 152 | * [libbzip2][427] - Patent-free, high-quality data compression 153 | library. [``BSD-4-Clause``][BSD-4-Clause] 154 | * [Lizard][489] - Formerly LZ5; an efficient compressor with fast 155 | decompression. Achieves compression ratios comparable with zip and zlib at 156 | decompression speeds of 1000MB/s and faster. [``BSD-2-Clause``][BSD-2-Clause] 157 | * [lz4][508] - Library for an extremely fast compression algorithm. 158 | [``BSD-2-Clause``][BSD-2-Clause] 159 | * [lzo][338] - Fast data compression library. 160 | [``GPL-2.0-or-later``][GPL-2.0-or-later] 161 | * [pixz][49] - Parallel, indexed xz compressor. [``BSD-2-Clause``][BSD-2-Clause] 162 | * [shoco][363] - Compressor for small text strings. [``MIT``][MIT] 163 | * [SIMDComp][519] - Simple library for compressing lists of integers using 164 | binary packing. Makes use of SIMD instructions on x86. 165 | [``BSD-3-Clause``][BSD-3-Clause] 166 | * [smaz][364] - Efficient string compression library. 167 | [``BSD-3-Clause``][BSD-3-Clause] 168 | * [squash][393] - Compression abstraction library, complete with some 169 | utilities. [``MIT``][MIT] 170 | * [TurboPFor][471] - Fastest integer compression. 171 | [``GPL-2.0-or-later``][GPL-2.0-or-later] 172 | * [TurboRLE][484] - Most efficient run-length encoding. [``GPL-2.0-or-later``][GPL-2.0-or-later] 173 | * [zip][520] - Really really small zip archive processing library. 174 | [``Unlicense``][Unlicense] 175 | * [Zlib][230] - Massively spiffy yet delicately unobtrusive compression 176 | library. [``BSD-3-Clause``][BSD-3-Clause] 177 | * [libarchive][548] - libarchive is a portable, efficient C library that can read and write streaming archives in a variety of formats. 178 | [``BSD-3-Clause``][BSD-3-Clause] 179 | * [zlib-ng][1] - Zlib replacement with optimizations for 'next-generation' 180 | systems. [``BSD-3-Clause``][BSD-3-Clause] 181 | * [Zstandard][510] - Fast, lossless compression algorithm, targeting real-time 182 | compression scenarios at zlib-level or better compression ratios. 183 | [``BSD-3-Clause``][BSD-3-Clause] 184 | 185 | ## Concurrency and Parallelism ## 186 | 187 | * [cchan][243] - Small library for channel constructs for inter-thread 188 | communication. Public domain. 189 | * [checkedthreads][465] - A simple library for 190 | parallelism, with built-in checking for race conditions. [``BSD-2-Clause``][BSD-2-Clause] 191 | * [ck][242] - Concurrency primitives, safe memory reclamation mechanisms and 192 | non-blocking data structures. [``BSD-2-Clause``][BSD-2-Clause] 193 | * [FCFS RWLock][540] - First-come first-served Readers/Writers lock for POSIX threads. [``CC0-1.0``][CC0-1.0] 194 | * [Libaco][599] - A blazing fast and lightweight C asymmetric coroutine library. [``Apache-2.0``][Apache-2.0] 195 | * [libconcurrent][390] - Concurrent programming library, using coroutines, for 196 | C11. [``BSD-3-Clause``][BSD-3-Clause] 197 | * [libcsp][572] - High performance concurrency C library influenced by the CSP model. [``MIT``][MIT] 198 | * [libdill][442] - Library which makes structured concurrent programming 199 | easy. [``MIT``][MIT] 200 | * [libhl][478] - Library implementing a thread-safe API to manage a range of data 201 | structures. Also provides some supporting functions and structures for 202 | concurrent and lockfree programming. [``LGPL-3.0-only``][LGPL-3.0-only] 203 | * [liburcu][474] - Data synchronization library, which scales linearly with the 204 | number of cores. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 205 | * [mill][352] - Go-style concurrency. [``MIT``][MIT] 206 | * [oclkit][311] - Two-file OpenCL wrapper. [``GPL-3.0-or-later``][GPL-3.0-or-later] 207 | * [OCL-MLA][312] - OpenCL Mid-Level Abstractions. [``BSD-3-Clause``][BSD-3-Clause] 208 | * [OpenMP][37] - Set of pragmas designed to allow for easy parallelization of 209 | code. Standard (licensing not applicable). 210 | * [Open MPI][284] - Message passing interface implementation. [``BSD-3-Clause``][BSD-3-Clause] 211 | * [pal][459] - Optimized library for maths, parallel processing and data 212 | movement. [``Apache-2.0``][Apache-2.0] 213 | * [pth][180] - Portable implementation for non-preemptive priority-based 214 | scheduling for multiple threads of execution. 215 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 216 | * [pthreads][146] - POSIX thread library. Standard (no license applicable). 217 | * [TinyCThread][115] - Portable, small implementation of the C11 threads 218 | API. [``Zlib``][Zlib] 219 | 220 | ## Crypto ## 221 | 222 | Mostly library implementations of well-known cryptographic algorithms or 223 | protocols. 224 | 225 | * [GNU SASL][160] - Implementation of the Simple Authentication and Security 226 | Layer and a few common SASL mechanism. [``GPL-3.0-or-later``][GPL-3.0-or-later] 227 | * [GnuTLS][112] - Secure communication library, implementing SSL, TLS and 228 | DTLS. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 229 | * [libgcrypt][142] - General-purpose cryptography library, with a range of 230 | available ciphers. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 231 | * [OpenSSL][110] - Implementation of the SSL and TLS protocols. Also includes a 232 | cryptography library. [Dual Licensed under the OpenSSL License and the SSLeay License][111]. 233 | * [liboqs][493] - Library for quantum-resistant cryptographicl algorithms. 234 | [``MIT``][MIT] 235 | * [libsodium][198] - Modern and easy-to-use crypto library. [``MIT``][MIT] 236 | * [libtomcrypt][299] - Fairly comprehensive, modular and portable 237 | cryptographic toolkit. Public domain. 238 | * [mbed TLS][291] - Another crypto implementation. [``Apache-2.0``][Apache-2.0] 239 | * [MIRACL][480] - Multiprecision Integer and Rational Arithmetic Cryptographic 240 | Library; an SDK for elliptic curve cryptography. 241 | [``AGPL-3.0-or-later``][AGPL-3.0-or-later] 242 | * [retter][507] - Collection of hash functions, ciphers, tools, libraries and 243 | materials related to cryptography and security. Public domain. 244 | * [s2n][359] - C99 implementation of the TLS/SSL protocols, designed to be 245 | simple, fast and with security as a priority. [``Apache-2.0``][Apache-2.0] 246 | * [sphlib][526] - Set of implementations of various hash functions, including 247 | several cryptographic ones. [``MIT``][MIT] 248 | * [trezor-crypto][485] - Heavily optimized crypto algorithms for embedded 249 | devices. [``MIT``][MIT] 250 | * [bfish][598] - A single include ANSI-C Blowfish ECB crypto library. Public 251 | domain. 252 | 253 | ## Database ## 254 | 255 | Databases and data stores with C APIs. 256 | 257 | * [BerkeleyDB][380] - Library for a high-performance embedded database for 258 | key-value data. [``AGPL-3.0-only``][AGPL-3.0-only] 259 | * [DuckDB][702] - Fast in-process analytical database, with C API. [``MIT``][MIT] 260 | * [EJDB2][568] - Embeddable JSON Database engine. [``MIT``][MIT] 261 | * [Groonga][524] - Columnar store with full-text search. [``LGPL-2.1-only``][LGPL-2.1-only] 262 | * [Hiredis][201] - Minimalistic client library for Redis. 263 | [``BSD-3-Clause``][BSD-3-Clause] 264 | * [libmongoc][233] - High-performance client library for [MongoDB][234]. [``Apache-2.0``][Apache-2.0] 265 | * [LMDB][105] - Ultra-fast, ultra-compact key-value embedded data store. [``OLDAP-2.8``][OLDAP-2.8] 266 | * [MySQL][551] - The world's most popular open source database. [``GPL-2.0-only``][GPL-2.0-only] 267 | * [PostgreSQL][121] - Powerful object-relational database system. [``PostgreSQL``][PostgreSQL] 268 | * [Redis][51] - Advanced key-value store. [``BSD-3-Clause``][BSD-3-Clause] 269 | * [sophia][244] - Modern, embeddable key-value database. 270 | [``BSD-2-Clause``][BSD-2-Clause] 271 | * [sparkey][509] - Simple constant key/value storage library. Designed for 272 | read-heavy loads with infrequent, large bulk inserts. 273 | [``Apache-2.0``][Apache-2.0] 274 | * [SQLite][22] - Self-contained, serverless, zero-configuration, transactional 275 | SQL database engine. Public domain. 276 | * [UnQLite][23] - Self-contained, serverless, zero-configuration, 277 | transactional NoSQL engine. [``BSD-2-Clause``][BSD-2-Clause] 278 | * [WhiteDB][512] - Lightweight database library, operating entirely in main 279 | memory. [``GPL-3.0-or-later``][GPL-3.0-or-later] 280 | * [FlashDB][703] - An ultra-lightweight database that supports key-value and 281 | time series data. [``Apache-2.0``][Apache-2.0] 282 | * [TDengine][704] - High-performance, cloud native time-series database. 283 | [``AGPL-3.0-only``][AGPL-3.0-only] 284 | 285 | ## Data Structures ## 286 | 287 | * [C-Macro-Collections][550] - Generate simple and generic data structures using macros. [``MIT``][MIT] 288 | * [CLIST][371] - Simple and lightweight [dynamic array][25] implementation. 289 | [``BSD-2-Clause``][BSD-2-Clause] 290 | * [Collections-C][406] - Library of generic data structures. [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 291 | * [ds][541] - Common Data Structures and Algorithms. [``MIT``][MIT] 292 | * [igraph][544] - A graph processing library. 293 | [``GPL-2.0-or-later``][GPL-2.0-or-later] 294 | * [kdtree][337] - Simple library for working with KD-trees. [``BSD-3-Clause``][BSD-3-Clause] 295 | * [libavl][156] - Library containing a range of self-balancing binary 296 | trees. [``GPL-3.0-or-later``][GPL-3.0-or-later] 297 | * [libcdada][585] - A small, portable, MACRO-less library for basic data structures 298 | (list, set, map, queue...) in C (C++ backend). [``BSD-2-Clause``][BSD-2-Clause] 299 | * [liblfds][411] - Portable lock-free data structure library. Public domain 300 | (more exactly, whatever license you want). 301 | * [libsrt][305] - Soft and hard real-time data structures. 302 | [``BSD-3-Clause``][BSD-3-Clause]. 303 | * [list.h][538] - Implementations for singly linked and doubly linked list functions. 304 | [``GPL-3.0-only``][GPL-3.0-only] 305 | * [M\*LIB][350] - Library for generic, but typesafe C containers. Implemented as 306 | header-only. [``BSD-2-Clause``][BSD-2-Clause] 307 | * [offbrand][498] - Collection of generic, reference-counted data structures. 308 | [``MIT``][MIT] 309 | * [PackedArray][241] - Random-access array of tightly packed unsigned integers of 310 | any desired width. Has a SIMD-optimized implementation. [``WTFPL``][WTFPL] 311 | * [rb3ptr][561] - Red-Black tree. Exposes almost all implementation primitives, so can be used for 312 | scenarios like augmentation, multiple compatible ordering functions, and more. [``MIT``][MIT] 313 | * [uthash][273] - Single-file hash table implementation. [``BSD-1-Clause``][BSD-1-Clause] 314 | * [vector.h][154] - Header library for typed lists. [``MIT``][MIT] 315 | 316 | ## Debugging ## 317 | 318 | Because we all have to do it sometimes. Various tools for making debugging 319 | easier or better, as well as libraries or code that allows better debugging 320 | work. 321 | 322 | * [C-Reduce][403] - Tool that takes a large C file with a property of interest 323 | and automatically produces a much smaller C file that has the same 324 | property. Intended to help create minimal bug-demonstrating cases in complex 325 | code. [``BSD-3-Clause``][BSD-3-Clause] 326 | * [CBMC][309] - C Bounded Model Checker; a tool for verification of array 327 | bounds, pointer safety and user-specified assertions. 328 | [``BSD-4-Clause``][BSD-4-Clause] 329 | * [cflow][404] - Analyzes a collection of source files and prints a graph 330 | charting control flow in the program. [``GPL-3.0-or-later``][GPL-3.0-or-later] 331 | * [Complexity][307] - Tool for measuring the complexity of source 332 | code. [``GPL-3.0-or-later``][GPL-3.0-or-later] 333 | * [CScout][410] - Source code analyzer and refactoring browser for C 334 | programs. [``GPL-3.0-only``][GPL-3.0-only] 335 | * [DDD][320] - Graphical front-end for a range of command-line 336 | debuggers. [``GPL-3.0-or-later``][GPL-3.0-or-later] 337 | * [debug][467] - One-header library for easier 'printf debugging'. 338 | [``MIT``][MIT] 339 | * [ESBMC][567] - Efficient SMT-based Bounded Model Checker; a tool for verification of 340 | single and multithread programs, user assertions, overflow, and pointer/memory safety. [``Apache-2.0``][Apache-2.0] 341 | * [GDB][87] - GNU Project debugger. [``GPL-3.0-or-later``][GPL-3.0-or-later] 342 | * [lldb][468] - LLVM debugger. [``NCSA``][NCSA] 343 | * [rr][95] - Debugger that records non-deterministic executions to allow for 344 | deterministic debugging. [``BSD-2-Clause``][BSD-2-Clause] 345 | * [Valgrind][85] - Range of dynamic analysis tools, including a leak 346 | checker. [``GPL-2.0-only``][GPL-2.0-only] 347 | 348 | ## Documentation Generation ## 349 | 350 | * [Cxref][317] - Generates documentation in either LaTeX, HTML, RTF or 351 | SGML. [``GPL-2.0-only``][GPL-2.0-only] 352 | * [DocOnce][322] - Modestly tagged markup language that can be used to 353 | generate a range of formats. [``BSD-3-Clause``][BSD-3-Clause] 354 | * [Doxygen][318] - De-facto standard tool for generating documentation from 355 | annotated sources. Can generate a large range of formats. [``GPL-2.0-only``][GPL-2.0-only] 356 | 357 | ## Editors ## 358 | 359 | Fancier, IDE-type editors. If you want a programmer's text editor, look 360 | elsewhere. Besides, whatever you use most likely supports C anyway. 361 | 362 | * [Anjuta DevStudio][42] - GNOME IDE. [``GPL-2.0-only``][GPL-2.0-only] 363 | * [Code::Blocks][249] - Extendable, configurable IDE supporting 364 | C. [``GPL-3.0-only``][GPL-3.0-only] 365 | * [CodeLite][45] - Cross-platform IDE. [``GPL-2.0-only``][GPL-2.0-only] 366 | * [Geany][43] - Small and fast IDE. [``GPL-2.0-or-later``][GPL-2.0-or-later] 367 | * [KDevelop][44] - KDE IDE. [``GPL-2.0-only``][GPL-2.0-only] 368 | * [zinjaI][578] - Simple, lightweight and feature-rich IDE. [``GPL-3.0-only``][GPL-3.0-only] 369 | 370 | ## Embeddable Scripting Engines 371 | 372 | When C isn't the right solution, or when you need a more dynamic configration engine: 373 | 374 | * [Duktape][591] - Embeddable Javascript engine with a focus on portability and compact footprint [``MIT``][MIT]. 375 | * [MetaCall][607] - Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more. [``Apache-2.0``][Apache-2.0] 376 | 377 | ## Frameworks ## 378 | 379 | Big libraries that provide data structures and other stuff you expect of a 380 | 'modern' standard library. 381 | 382 | * [APR][78] - Apache Portable Runtime; another library of cross-platform utility 383 | functions. [``Apache-2.0``][Apache-2.0] 384 | * [C Algorithms][88] - Collection of common algorithms and data structures. [``ISC``][ISC] 385 | * [CPL][308] - The Common Pipeline Library; a set of libraries designed to be a 386 | comprehensive, efficient and robust software toolkit. 387 | [``GPL-2.0-only``][GPL-2.0-only] 388 | * [EFL][119] - Large collection of useful data structures and 389 | functions. Various licenses, all open source. 390 | * [GLib][701] - Library of utility functions and structures, designed to be 391 | portable, efficient and powerful. [``LGPL-2.1-only``][LGPL-2.1-only] 392 | * [klib][76] - Small and lightweight implementations of common algorithms and 393 | data structures. [``MIT``][MIT] 394 | * [libcork][476] - Utility functions and structures, designed for 395 | resource-constrained systems. Can be embedded. [``BSD-3-Clause``][BSD-3-Clause] 396 | * [libnih][93] - Lightweight library of functions and 397 | structures. [``GPL-2.0-only``][GPL-2.0-only] 398 | * [libU][28] - Small library of basic utilities, including memory allocation, 399 | string manipulation and logging. [``BSD-3-Clause``][BSD-3-Clause] 400 | * [PBL][346] - Large library of utilities, featuring data structures, among 401 | other things. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 402 | * [plibsys][588] - Cross-platform system C library. Zero third-party dependencies, uses only native system calls. [``MIT``][MIT] 403 | * [qlibc][277] - Simple and powerful library, designed as a replacement for 404 | GLib while focusing on being small and light. [``BSD-2-Clause``][BSD-2-Clause] 405 | * [sc][595] - Common libraries and data structures for C. [``MIT``][MIT] 406 | * [TBOX][398] - Multi-platform library with a large number of 407 | capabilities. [``Apache-2.0``][Apache-2.0] 408 | * [pspsdk][620] - An open-source SDK for PSP homebrew development. [Various licences][621]. 409 | 410 | ## Game Programming ## 411 | 412 | Engines, libraries and other helpful things specifically for making games. 413 | 414 | * [Allegro][48] - Cross-platform, video game development and multimedia 415 | library. [``Zlib``][Zlib] 416 | * [AssetKit][571] 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs [``MIT``][MIT] 417 | * [astera][594] - C99 Cross Platform 2D Game Library [``MIT``][MIT] 418 | * [cglm][542] - 📽 Optimized OpenGL/Graphics Math (glm) for C. [``MIT``][MIT] 419 | * [Chipmunk2D][303] - Fast and lightweight 2D game physics library. [``MIT``][MIT] 420 | * [cmt][570] - 🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework. [``MIT``][MIT] 421 | * [Corange][101] - Game engine in pure C. [``BSD-2-Clause``][BSD-2-Clause] 422 | * [CSFML][90] - Binding for [SFML][91]. [``Zlib``][Zlib] 423 | * [Darkplaces][369] - Modified version of the Quake2 engine. [``GPL-2.0-only``][GPL-2.0-only] 424 | * [Epoxy][414] - Library for handling OpenGL function pointer management. [``MIT``][MIT] 425 | * [exengine][618] - 3D game engine in C99 with a starting template. [``MIT``][MIT] 426 | * [Flecs][557] - A Multithreaded Entity Component System written for C89 & C99 [``MIT``][MIT] 427 | * [Freecell Solver][539] - Set of libraries and command-line programs for 428 | automatically solving FreeCell and some similar variants of card Solitaire. [``MIT``][MIT] 429 | * [FreeGLUT][99] - Alternative to the OpenGL Utility Toolkit. Allows the 430 | creation and management of windows with OpenGL contexts. [``X11``][X11] 431 | * [GLFW][98] - Multi-platform library for creating windows with OpenGL 432 | contexts. [``Zlib``][Zlib] 433 | * [ioquake3][107] - Quake3 engine, freed at last. 434 | [``GPL-2.0-only``][GPL-2.0-only] 435 | * [kazmath][446] - Maths library for games. [``BSD-2-Clause``][BSD-2-Clause] 436 | * [libao][376] - Cross-platform audio library with a wide variety of 437 | outputs. [``GPL-2.0-or-later``][GPL-2.0-or-later] 438 | * [librg][558] - Pure C99 game networking library for building simple and elegant cross-platform multiplayer client-server solutions. [``Apache-2.0``][Apache-2.0] 439 | * [MATHC][534] - Math library for 2D and 3D programming. [``ZLib``][Zlib] 440 | * [Orx][370] - Portable, lightweight, plugin-based, data-driven, 2D-oriented 441 | game engine. [``Zlib``][Zlib] 442 | * [Quake][225] - Quake engine. [``GPL-2.0-only``][GPL-2.0-only] 443 | * [Quake2][221] - Quake2 engine. [``GPL-2.0-only``][GPL-2.0-only] 444 | * [raylib][516] - Simple and easy-to-use library to learn video game 445 | programming. [``Zlib``][Zlib] 446 | * [RetroArch][231] - Reference frontend for [libretro][232]. [``GPL-3.0-only``][GPL-3.0-only] 447 | * [SDL2][50] - Cross-platform library designed to provide low-level access to 448 | audio, keyboard, mouse, joystick and graphics hardware via OpenGL. [``Zlib``][Zlib] 449 | * [sdl-gpu][457] - Library for high-performance, modern 2D graphics. Based on 450 | SDL. [``MIT``][MIT] 451 | * [SIGIL][429] - Sound, Input and Graphics Integration Library; a simple 452 | alternative to other libraries for doing all those things. Various licenses, 453 | all open source. 454 | * [uastar][535] - Minimal A\* implementation. [``ZLib``][Zlib] 455 | 456 | ## Graphics ## 457 | 458 | Programmatic manipulation of graphics in C; if you want to make a GUI, the 459 | Graphical User Interface section has what you need. 460 | 461 | * [AssetKit][571] 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs [``MIT``][MIT] 462 | * [Cairo][384] - 2D graphics library. [``LGPL-2.1-only``][LGPL-2.1-only] or [``MPL-1.1``][385]. 463 | * [cmt][570] - 🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework. [``MIT``][MIT] 464 | * [giflib][401] - Library for reading and writing gif images. [``MIT``][MIT] 465 | * [graphene][515] - Thin layer of graphical data types. [``MIT``][MIT] 466 | * [heman][365] - Tiny library of image utilities dealing with height maps, 467 | normal maps, distance fields and the like. [``MIT``][MIT] 468 | * [libcaca][366] - ASCII renderer for terminal-based interfaces. [``WTFPL``][WTFPL] 469 | * [libgd][402] - Library for the dynamic creation of images by programmers. [``MIT``][MIT] 470 | * [libimagequant][300] - Small, portable library for high-quality conversion of 471 | RGBA images to 8-bit indexed colour images. [``GPL-3.0-or-later``][GPL-3.0-or-later] 472 | * [libjpeg-turbo][193] - Faster library for reading and writing JPEG files. 473 | [Various licences][194]. 474 | * [libpng][382] - Official PNG reference library. [``Libpng``][Libpng] 475 | * [libRSVG][417] - Library to render SVG files using Cairo. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 476 | * [libsixel][17] - Library implementing the SIXEL protocol, allowing beautiful 477 | graphics in your terminal. [``MIT``][MIT] 478 | * [libspng][68] - A simpler interface for reading and writing PNG files. 479 | [``BSD-2-Clause``][BSD-2-Clause] 480 | * [libvips][511] - Image processing library. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 481 | * [libxmi][174] - Function library for rasterizing 2D vector 482 | graphics. [``GPL-3.0-or-later``][GPL-3.0-or-later] 483 | * [lightmapper][444] - Single-file library for lightmap baking, using an 484 | existing OpenGL renderer. Public domain. 485 | * [little CMS][600] - A Color Management System. It provides fast transforms between ICC profiles. [``MIT``][MIT] 486 | * [mozjpeg][200] - Improved JPEG encoder. [``BSD-3-Clause``][BSD-3-Clause] 487 | * [nanovg][505] - Anti-aliased 2D vector drawing library on top of OpenGL, for 488 | UI and visualizations. [``Zlib``][Zlib] 489 | * [OpenGL][147] - Industry standard for high-performance graphics, with a 490 | native C binding. [Various licenses][148]. 491 | * [PlutoVG][590] - A standalone 2D vector graphics library in C [``MIT``][MIT] 492 | * [SAIL][601] - ⛵ The missing small and fast image decoding library for humans (not for machines) [``MIT``][MIT] 493 | 494 | ## Graphical User Interface ## 495 | 496 | Widget toolkits, or things meant to be used in a similar way to them. 497 | 498 | * [GTK+][14] - Cross-platform widget toolkit. [``LGPL-2.1-only``][LGPL-2.1-only] 499 | * [IUP][16] - Another cross-platform widget toolkit. [``MIT``][MIT] 500 | * [microui][616] - Tiny immediate-mode UI library written in portable ANSI C. [```MIT```][MIT] 501 | * [nappgui][705] - Professional SDK to build cross-platform desktop applications using C. [``MIT``][MIT] 502 | * [nuklear][408] - Small, C89, single-header widget toolkit. Public domain. 503 | * [tinyfiledialogs][426] - Single-file library for simple dialogs. Compatible 504 | with many other toolkits and OSes. [``Zlib``][Zlib] 505 | * [Tk][19] - Basic widget toolkit. Part of Tcl/Tk. [``TCL``][TCL] 506 | * [XForms Toolkit][21] - Widget toolkit designed for the XWindow 507 | system. [``LGPL-2.1-only``][LGPL-2.1-only] 508 | * [LVGL][575] - embedded GUI with easy-to-use graphical elements, beautiful visuals and 509 | a low memory footprint. [``MIT``][MIT] 510 | * [luigi][614] - A barebones single-header GUI library for Win32, X11 and Essence. [``MIT``][MIT] 511 | 512 | ## Hashing ## 513 | 514 | Hash function implementations for *non*-crypto purposes. Cryptographic hashes 515 | can be found in the Crypto section. 516 | 517 | * [CLHash][495] - Library implementing the ridiculously fast CLHash hashing 518 | function. Only works on Intel Haswell or newer. [``Apache-2.0``][Apache-2.0] 519 | * [HighwayHash][527] - Fast, strong, SIMD-using hash function. Also contains 520 | an implementation of SipHash (although this is slower). 521 | [``Apache-2.0``][Apache-2.0] 522 | * [SpookyHash][326] - Extremely fast hash function. 523 | [``BSD-3-Clause``][BSD-3-Clause] 524 | * [t1ha][530] - Fast Positive Hash - a portable, fast hash function. 525 | [``BSD-3-Clause``][BSD-3-Clause] 526 | * [xxHash][522] - Extremely fast hashing algorithm. Comes in 32 and 64-bit 527 | varieties. [``BSD-2-Clause``][BSD-2-Clause] 528 | 529 | ## Learning, Reference and Tutorials ## 530 | 531 | Resources for learning C programming in general, or something useful relating 532 | to C programming. 533 | 534 | ### Reference resources online ### 535 | 536 | * [Benchmarks of the Lockless Memory Allocator][450] 537 | * [C FAQ - comp.lang.c Frequently Asked Questions][262] 538 | * [Comparison of C/POSIX standard library implementations for Linux][362] 539 | * [Draft C89 standard][6] 540 | * [Draft C99 standard][258] 541 | * [Draft C11 standard][247] 542 | * [Finding the best 64-bit simulation PRNG][529] 543 | * [SEI CERT C Coding Standard][266] 544 | * [tinyc.game][559] - Tiny C games you can compile and run RIGHT NOW http://tinyc.games [``MIT``][MIT] 545 | 546 | ### Beginner resources online ### 547 | 548 | * [A tutorial on pointers][213] 549 | * [A tutorial on portable Makefiles][528] 550 | * [Building C Projects][208] 551 | * [C Programming Wikibook][248] 552 | * [Introduction to \`fun' C][279] 553 | * [Learning C with GDB][349] 554 | * [memcpy vs memmove][205] 555 | * [POSIX Threads Programming tutorial][263] (a little dated, but most of it is 556 | still valid and useful) 557 | * [The GNU C Programming Tutorial][212] (online PDF) 558 | * [Templating in C][267] 559 | * [What a C programmer should know about memory][227] 560 | * [CodeforWin: Learn C Programming, Data Structures Tutorials and Exercises online][605] 561 | * [Learn C: Free and Open-Source Interactive C Tutorial][606] 562 | * [How to program a text adventure in C][615] 563 | 564 | ### Intermediate resources online ### 565 | 566 | * [8 gdb tricks you should know][206] 567 | * [10 C99 tricks][257] 568 | * [A comprehensive MPI tutorial resource][454] 569 | * [Build Your Own Text Editor][700] 570 | * [Diving into concurrency: trying out mutexes and atomics][202] 571 | * [Generic C reference counting][443] 572 | * [How to write portable C without complicating your build][490] 573 | * [Introduction to OpenMP][207] (video) 574 | * [OpenMP tutorial][264] (for the OpenMP3 standard) 575 | * [MPI tutorial][265] 576 | * [Scalable C - Writing Large-Scale Distributed C][391] 577 | * [Some unknown features or tricks in C language][374] 578 | * [What every C programmer should know about undefined behaviour][275] 579 | 580 | ### Advanced resources online ### 581 | 582 | * [Advanced metaprogramming in C][357] 583 | * [A quick tutorial on implementing and debugging malloc, free, calloc, and realloc][204] 584 | * [Bit twiddling hacks][73] 585 | * [Implementing smart pointers for the C programming language][240] 586 | * [Inline functions in C][245] 587 | * [Metaprogramming custom control structures in C][343] 588 | * [Solving the temporary storage problem of C macros][358] 589 | * [Some dark corners of C][210] 590 | * [Writing efficient C and C code optimization][33] 591 | * [Compiling Algebraic Data Types in Pure C99][608] 592 | 593 | ### Reference books ### 594 | 595 | * [C: A Reference Manual 5E][181] - Full reference book for C99. 596 | * [C in a Nutshell 2E][418] - Concise reference book for C11. 597 | * [C Pocket Reference][182] - Concise reference book for C99. 598 | * [The C Programming Language 2E][7] - Original book on C, by its creators. 599 | 600 | ### Beginner books ### 601 | 602 | * [C Primer Plus 6E][184] - Complete tutorial on programming in C11. 603 | * [C Programming: A Modern Approach][64] - Excellent book to learn the basics 604 | of C. 605 | * [Head First C][102] - 'Head-first' style book for learning C. 606 | 607 | ### Intermediate books ### 608 | 609 | * [21st Century C][35] - Good _second_ programming book on C. 610 | * [Understanding and Using C Pointers][36] - In-depth resource on pointers in 611 | C. 612 | * [ZeroMQ][183] - Book for using ZeroMQ with C. 613 | 614 | ### Advanced books ### 615 | 616 | * [Expert C Programming: Deep C Secrets][55] - Interesting, in-depth and 617 | entertaining look at the innards of C. 618 | * [Modern C, Third Edition: Covers the C23 standard][425] - In Modern C, Third Edition you’ll learn to harness C’s full potential using the latest tools and techniques. 619 | 620 | ## Lexing and Parsing ## 621 | 622 | Libraries specifically for lexical analysis (or lexing) and syntactic analysis 623 | (or parsing). 624 | 625 | * [flex][491] - Fast lexical analyzer generator. [``BSD-2-Clause``][BSD-2-Clause] 626 | * [GNU Bison][492] - General-purpose parser generator that converts an 627 | annotated context-free grammar into a range of parsers. [``GPL-3.0-or-later``][GPL-3.0-or-later] 628 | * [hammer][356] - Parser combinators for binary formats. 629 | [``GPL-2.0-only``][GPL-2.0-only] 630 | * [mpc][238] - Parser combinator library. [``BSD-2-Clause``][BSD-2-Clause] 631 | * [owl][576] - A parser generator for visibly pushdown languages. [``MIT``][MIT] 632 | * [re2c][34] - Lexer generator, producing fast lexers, with access to its 633 | internals. Public domain. 634 | 635 | ## Memory Management ## 636 | 637 | Whether a different, faster malloc or outright garbage collection, anything 638 | to do with managing C memory lives here. 639 | 640 | * [Boehm GC][125] - Garbage collection for C. Various 641 | licenses, all open source. 642 | * [jemalloc][293] - Malloc implementation that emphasizes avoidance of 643 | fragmentation and scalable concurrency support. 644 | [``BSD-2-Clause``][BSD-2-Clause] 645 | * [Lockless Memory Allocator][451] - Efficient memory allocator. 646 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 647 | * [libcsptr][66] - Smart pointers for C. [``MIT``][MIT] 648 | * [rpmalloc][126] - Thread-caching, fast memory allocator, naturally aligned on 649 | 32-byte boundaries. Public domain. 650 | * [talloc][353] - Hierarchical, reference-counted memory pool system with 651 | destructors. [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 652 | * [tlsf][531] - Two-Level Segregated Fit allocator; a general-purpose, dynamic 653 | memory allocator designed to meet real-time requirements. [Up-to-date 654 | implementation][532]. [``BSD-3-Clause``][BSD-3-Clause] 655 | 656 | ## Multimedia ## 657 | 658 | * [aubio][523] - Library for audio and music analysis. [``GPL-3.0-or-later``][GPL-3.0-or-later] 659 | * [FFMPEG][63] - Complete, cross-platform solution to record, convert and 660 | stream audio and video. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 661 | * [GStreamer][123] - Framework for audio and visual media. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 662 | * [libmpv][348] - Music-playing library. [``GPL-2.0-or-later``][GPL-2.0-or-later] 663 | * [libsndfile][458] - Library for reading and writing sound files. Supports 664 | many formats. [``LGPL-2.1-only``][LGPL-2.1-only] or 665 | [``LGPL-3.0-only``][LGPL-3.0-only] 666 | * [libsoundio][372] - Library for cross-platform, real-time audio input and 667 | output. Has a range of back-ends. [``MIT``][MIT] 668 | * [libVLC][556] - Complete multimedia library for audio and video 669 | encoding, decoding, playing and streaming. [``GPL-2.0-only``][GPL-2.0-only] 670 | * [lodepng][69] - Simple PNG image decoder and encoder, requiring no other 671 | dependencies. [``BSD-3-Clause``][BSD-3-Clause] 672 | * [minimp3][536] - Lightweight MP3 decoder single header library. [``CC0-1.0``][CC0-1.0] 673 | * [Soundpipe][513] - Lightweight music DSP library. [``MIT``][MIT] 674 | 675 | ## Networking and Internet ## 676 | 677 | Low-level networking and internet-related stuff. If you want something more 678 | comprehensive and high-level, you may want the Web Frameworks section. 679 | 680 | * [asnlc][138] - Compiler of ASN.1 specifications into C source code. [``BSD-2-Clause``][BSD-2-Clause] 681 | * [CHL][422] - C Hypertext Library - A library for writing web applications in 682 | C. [``GPL-3.0-only``][GPL-3.0-only] 683 | * [czmq][226] - High-level binding for ZeroMQ. [``MPL-2.0``][MPL-2.0] 684 | * [Dyad.c][554] - Lightweight, easy, asynchronous networking library. [``MIT``][MIT] 685 | * [GNU adns][155] - Advanced, easy-to-use, asynch-capable DNS client library 686 | and utilities. [``GPL-3.0-or-later``][GPL-3.0-or-later] 687 | * [gumbo-parser][196] - HTML5 parsing library in C99. 688 | [``Apache-2.0``][Apache-2.0] 689 | * [H20][127] - A new-generation HTTP server. [``MIT``][MIT] 690 | * [llhttp][197] - HTTP request/response parser. [``MIT``][MIT] 691 | * [ldns][339] - Library to simplify DNS programming. 692 | [``BSD-3-Clause``][BSD-3-Clause] 693 | * [libcurl][65] - Client-side URL transfer library, supporting a wide range of 694 | formats. [``curl``][curl] 695 | * [LibEtPan][222] - Mail library providing an efficient network for IMAP, 696 | SMTP, POP and NNTP. [``BSD-3-Clause``][BSD-3-Clause] 697 | * [libev][144] - Yet another event loop. [``BSD-2-Clause``][BSD-2-Clause] 698 | * [libevent][124] - Event loop replacement for network servers. [``BSD-3-Clause``][BSD-3-Clause] 699 | * [libhttpd][166] - Library to add basic web server capabilities to an 700 | application or embedded device. [``GPL-2.0-only``][GPL-2.0-only] 701 | * [libhv][564] - Cross platform event loop library. [``BSD-3-Clause``][BSD-3-Clause] 702 | * [libidn][164] - Implementation of the Stringprep, Punycode and IDNA 703 | specifications. [``GPL-3.0-or-later``][GPL-3.0-or-later] 704 | * [libmicrohttpd][165] - Small library that makes it easy to run an HTTP 705 | server as part of another application. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 706 | * [libnl][582] - `libnl` is a collection of libraries to provie APIs to the 707 | Netlink protocol (replacement for ioctl). It's primary use is to communicate 708 | with the Linux kernel, to modify networking state (interfaces, routing etc...). 709 | [``LGPL-2.1-only``][LGPL-2.1-only] 710 | * [libonion][170] - HTTP server library, designed to be easy to 711 | use. [``Apache-2.0``][Apache-2.0] 712 | * [libpcap][566] - API provides to various kernel packet capture mechanism. [``BSD-3-Clause``][BSD-3-Clause] 713 | * [libquickmail][399] - Library intended to give developers a way to send 714 | email from their applications. Supports multiple To/Cc/Bcc recipients and 715 | attachments without size limits. [``GPL-3.0-or-later``][GPL-3.0-or-later] 716 | * [libsagui][172] - Library for cross-platform HTTP servers. [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 717 | * [libuhttpd][577] - A very flexible, lightweight and fully asynchronous HTTP server 718 | library based on libev and http-parser for Embedded Linux. [``MIT``][MIT] 719 | * [LibVNCServer][464] - Cross-platform libraries to implement VNC server and/or 720 | client functionality. [``GPL-2.0-or-later``][GPL-2.0-or-later] 721 | * [libwebsock][261] - Easy-to-use and powerful web socket library. 722 | [``LGPL-3.0-only``][LGPL-3.0-only] 723 | * [libzmq][581] - Core ZeroMQ library, a high-performance asynchronous 724 | messaging library, aimed at use in distributed or concurrent applications. 725 | C API (backend C++) [``GPL-3.0-or-later``][GPL-3.0-or-later] with static 726 | linking exception 727 | * [lwan][199] - Experimental, scalable, high-performance HTTP 728 | server. [``GPL-2.0-only``][GPL-2.0-only] 729 | * [mongoose][171] - Embedded web server. [``GPL-2.0-only``][GPL-2.0-only] 730 | * [MQTT-C][549] - A portable MQTT C client for embedded systems and PCs alike. [``MIT``][MIT] 731 | * [nanomsg][139] - C-based implementation of ZeroMQ. [``MIT``][MIT] 732 | * [NNG][106] - nanomsg-next-generation - lightweight brokerless messaging. 733 | [``MIT``][MIT] 734 | * [oSip][179] - SIP implementation without additional 735 | dependencies. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 736 | * [silgy][579] - Asynchronous HTTP(S) engine for C/C++ projects. [``MIT``][MIT] 737 | * [socket99][203] - C99 wrapper for the BSD sockets API. [``ISC``][ISC] 738 | * [twitc][237] - Mini library for interacting with the Twitter OAuth API. [``MIT``][MIT] 739 | * [uriparser][100] - Strictly RFC 3986-compliant URI parsing and handling library. 740 | [``BSD-3-Clause``][BSD-3-Clause] 741 | * [Wslay][460] - WebSocket library. Implements version 13 of the WebSocket 742 | protocol, as described in RFC 6455. [``MIT``][MIT] 743 | * [zyre][419] - Framework for proximity-based peer-to-peer applications. [``MPL-2.0``][MPL-2.0] 744 | 745 | ## Numerical ## 746 | 747 | * [apophenia][188] - Library for statistical and scientific computing. [``GPL-2.0-only``][GPL-2.0-only] 748 | * [Arb][497] - Library for arbitrary-precision interval arithmetic. 749 | [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 750 | * [ATLAS][137] - Automatically Tuned Linear Algebra Software. [``BSD-3-Clause``][BSD-3-Clause] 751 | * [clBLAS][439] - BLAS functions written in OpenCL. [``Apache-2.0``][Apache-2.0] 752 | * [cmathl][546] - Math library with a great variety of mathematical functions with CMake build support. Seeks to be close to C89/C90 compliant for portability. [``MIT``][MIT] 753 | * [Cuba][316] - Library for multidimensional numerical integration. [``LGPL-3.0-only``][LGPL-3.0-only] 754 | * [fft-c][537] - A high-performance Fourier Transform from netlib's fftpack; wrapped in a user-friendly format [``MIT``][ MIT] 755 | * [FFTW][70] - The Fastest Fourier Transform in the West; a highly optimized 756 | fast Fourier transform routine. [``GPL-2.0-or-later``][GPL-2.0-or-later] 757 | * [FLINT][255] - Fast Library for Number Theory; a library supporting arithmetic 758 | with numbers, polynomials, power series and matrices, among 759 | others. [``GPL-2.0-or-later``][GPL-2.0-or-later] 760 | * [GLPK][159] - GNU Linear Programming Kit; a package designed for solving 761 | large-scale linear programming, mixed integer programming and other related 762 | problems. [``GPL-3.0-or-later``][GPL-3.0-or-later] 763 | * [GMP][79] - GNU Multple Precision Arithmetic Library; a library for 764 | arbitrary-precision arithmetic. [``GPL-2.0-only``][GPL-2.0-only] or [``LGPL-3.0-only``][LGPL-3.0-only] 765 | * [GNU MPC][175] - Library for complex number arithmetic. [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 766 | * [GNU MPFR][176] - Library for arbitrary-precision floating-point 767 | arithmetic. [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 768 | * [GNU MPRIA][177] - Portable mathematics library for multi-precision rational 769 | interval arithmetic. [``GPL-3.0-or-later``][GPL-3.0-or-later] 770 | * [GSL][47] - The GNU Scientific Library; a sophisticated numerical 771 | library. [``GPL-3.0-only``][GPL-3.0-only]. 772 | * [KISS FFT][71] - Simple fast Fourier transform library. [``BSD-3-Clause``][BSD-3-Clause] 773 | * [LAPACKE][133] - Interface to [LAPACK][134]. [``BSD-3-Clause``][BSD-3-Clause] 774 | * [LibTomMath][461] - Portable, number-theoretic, multiple-precision integer 775 | library. Supports algebra, digit manipulation, modular reductions, and various 776 | number-theoretic routines. Public domain. 777 | * [LibTomPoly][463] - Polynomial-related maths library. Public domain. 778 | * [PARI/GP][256] - Computer algebra system for number theory; includes a 779 | compiler to C. [``GPL-2.0-or-later``][GPL-2.0-or-later] 780 | * [PETSc][282] - Suite of data structures and routines for scalable parallel 781 | solution of scientific applications modelled by partial differential 782 | equations. [``BSD-2-Clause``][BSD-2-Clause] 783 | * [SCS][483] - Splitting Conic Solver; a numerical optimization package for 784 | solving large-scale convex cone problems. [``MIT``][MIT] 785 | * [SLEPc][283] - Library for the solution of large, sparse eigenvalue 786 | problems on parallel computers. [``LGPL-3.0-only``][LGPL-3.0-only] 787 | * [TomsFastMath][462] - Set of optimized maths operations (in assembly), 788 | suitable for cryptographic use. Public domain. 789 | * [Yeppp!][72] - Fast, SIMD-optimized mathematical library. [``BSD-3-Clause``][BSD-3-Clause] 790 | 791 | ## Profiling ## 792 | 793 | * [gperftools][295] - Collection of utilities for measuring and improving 794 | performance. [``BSD-3-Clause``][BSD-3-Clause] 795 | * [gprof][86] - Performance analysis tool. Part of GNU binutils. 796 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 797 | * [OProfile][475] - Statistical profiler for Linux. Can profile any code 798 | (including the kernel!) with low overhead and without recompilation. [``GPL-2.0-only``][GPL-2.0-only] 799 | * [perf][375] - Linux kernel-based profiler with a lot of functionality. 800 | [``GPL-2.0-only``][GPL-2.0-only] 801 | 802 | ## PDF ## 803 | 804 | * [pdfio][612] - PDFio is a simple C library for reading and writing PDF files.[``Apache-2.0``][Apache-2.0] 805 | 806 | ## Regex ## 807 | 808 | * [Onigmo][518] - Fork of Oniguruma, supporting more advanced regexps. 809 | [``BSD-2-Clause``][BSD-2-Clause] 810 | * [Oniguruma][517] - Regex library supporting a wide range of encodings, and 811 | incorporating many security-oriented fixes. [``BSD-2-Clause``][BSD-2-Clause] 812 | * [PCRE][83] - Implementation of regexes identical to that of 813 | Perl 5. [``BSD-3-Clause``][BSD-3-Clause] 814 | * [SLRE][80] - Super Light Regular Expression library; a small 815 | implementation of a subset of Perl regex syntax. 816 | [``GPL-2.0-only``][GPL-2.0-only] 817 | * [TRE][82] - POSIX-compliant, feature-full regex library. [``BSD-2-Clause``][BSD-2-Clause] 818 | 819 | ## Serialization ## 820 | 821 | * [binn][400] - Binary serialization format, meant to be compact, fast and 822 | easy-to-use. [``Apache-2.0``][Apache-2.0] 823 | * [c-capnproto][130] - Implementation of the Cap'n Proto serialization 824 | protocol. [``MIT``][MIT] 825 | * [cmp][377] - Implementation of the [MessagePack][379] serialization 826 | protocol. [``MIT``][MIT] 827 | * [flatcc][187] - [FlatBuffers][145] compiler and library. 828 | [``Apache-2.0``][Apache-2.0] 829 | * [libavro][140] - Implementation of the Avro data serialization system. [``Apache-2.0``][Apache-2.0] 830 | * [mpack][378] - Another implementation of the [MessagePack][379] serialization 831 | protocol. [``MIT``][MIT] 832 | * [OPIC][397] - Object Persistence in C; a revolutionary serialization framework, 833 | with matching on-disk and in-memory representations. [``GPL-3.0-or-later``][GPL-3.0-or-later] 834 | * [protobuf-c][129] - Implementation of Google Protocol Buffer. [``BSD-2-Clause``][BSD-2-Clause] 835 | * [tpl][473] - Small binary serialization library. [``MIT``][MIT] 836 | * [xdr][131] - External Data Representation; a standard for data 837 | serialization. Standard (no license applicable). 838 | * [pbtools][555] - Google Protocol Buffers C source code generator. [``MIT``][MIT] 839 | 840 | ## Source Code Collections ## 841 | 842 | Collections of small source code. If you want something big and integrated, check 843 | the Frameworks section. 844 | 845 | * [CCAN][103] - Modelled after Perl's CPAN, this is a big collection of code 846 | that does stuff. The full list is [here][104]. Various licenses, all 847 | open source. 848 | * [clib][26] - Something of a package manager. Comes with 849 | a [bunch of libraries of its own][27]. [``MIT``][MIT] 850 | * [gnulib][46] - Collection of common GNU code. Various licenses, all 851 | open source. 852 | * [libdjb][292] - Collection of libraries doing various things. (Apparently) 853 | public domain. 854 | * [mmx][448] - Collection of single-header libraries. Various licenses, all 855 | open source. 856 | * [par][456] - Bunch of single-file libraries. [``MIT``][MIT] 857 | * [Snippets][220] - Useful code snippets and header-only libraries. 858 | Public domain. 859 | * [stb][114] - Range of single-file libraries. Public domain. 860 | * [tinyheaders][108] - Collection of header-only libraries, primarily oriented 861 | toward game development. [``Zlib``][Zlib] 862 | * [zpl][602] - C99 cross-platform header-only library with many goodies. [``BSD-3-Clause``, ``Unlicense``][BSD-3-Clause, Unlicense] 863 | 864 | ## Standard Libraries ## 865 | 866 | Implementations of the (standard-mandated) C standard library. 867 | 868 | * [Bionic][4] - Google's standard library, developed for Android. [``BSD-3-Clause``][BSD-3-Clause] 869 | * [cloudlibc][486] - Standard library based on the concept of 870 | [capability-based security][487]. [``BSD-2-Clause``][BSD-2-Clause] 871 | * [dietlibc][9] - Standard library designed for the smallest possible 872 | binaries. [``GPL-2.0-only``][GPL-2.0-only] 873 | * [glibc][57] - The GNU C Library; an implementation of the standard 874 | library. [``LGPL-2.1-only``][LGPL-2.1-only]. 875 | * [musl][10] - Standard library, compatible with POSIX 2008 and C11. Designed 876 | for static linking. [``MIT``][MIT] 877 | * [PDCLib][447] - The Public Domain C Library. Implements most of C99 and some of 878 | C11. [``CC0-1.0``][CC0-1.0] 879 | * [uClibc-ng][12] - Small C library for developing embedded systems. 880 | [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 881 | 882 | ### Template libraries 883 | 884 | * [CTL][613] - C CONTAINER TEMPLATE LIBRARY (CTL) [``MIT``][MIT] 885 | 886 | ## String Manipulation ## 887 | 888 | * [bstring][116] - The Better String Library. [``BSD-3-Clause``][BSD-3-Clause] 889 | * [ICU][67] - International Components for Unicode; a library for Unicode 890 | support. [``ICU``][ICU] 891 | * [levenstein.c][360] - [Levenstein distance][334] algorithm implementation. 892 | [``MIT``][MIT]. 893 | * [libunistring][173] - Library for manipulating Unicode 894 | strings. [``LGPL-3.0-only``][LGPL-3.0-only] 895 | * [libgiconv][163] - Text conversion library. [``LGPL-2.1-only``][LGPL-2.1-only] 896 | * [librope][479] - UTF-8 rope ('heavy' string) library. [``MIT``][MIT] 897 | * [SDS][29] - Simple Dynamic Strings; a library for handling strings in a 898 | simpler way, but one that is compatible with normal C string 899 | functions. Available via [clib][26]. [``BSD-2-Clause``][BSD-2-Clause] 900 | * [stmr.c][383] - [Porter Stemmer][367] algorithm implementation. [``MIT``][MIT] 901 | * [str][587] - Yet another string library for C language. [``BSD-3-Clause``][BSD-3-Clause] 902 | * [StringZilla][623] - Up to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators. [``Apache-2.0``][Apache-2.0] 903 | * [utf8.h][472] - Single-header UTF-8 library, designed to mimic C-style string 904 | functions. Public domain. 905 | * [utf8proc][469] - Library for processing UTF-8 data. [``MIT``][MIT] 906 | 907 | ## Structured File Processing ## 908 | 909 | This includes libraries for things like XML, JSON, CSV, and other similar formats. 910 | 911 | ### CSV ### 912 | 913 | * [libcsv][387] - Simple, streaming CSV parser. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 914 | 915 | ### JSON ### 916 | 917 | * [Jansson][53] - Library for encoding, decoding and manipulating JSON. [``MIT``][MIT] 918 | * [jfes][488] - JSON For Embedded Systems; simple JSON engine without any 919 | dependencies. [``MIT``][MIT] 920 | * [jsmn][120] - Minimalistic JSON parser. [``MIT``][MIT] 921 | * [json][39] - Simple, low-memory-use JSON parser. [``MIT``][MIT] 922 | * [json-c][8] - Easily work with JSON in C. Comes with a reference-counted object 923 | model, and aims for conformance with [RFC 7159][11]. [``MIT``][MIT] 924 | * [json.h][431] - Single-file non-streaming JSON parser. [``Unlicense``][Unlicense] 925 | * [parson][32] - Two-file, C89-compatible JSON parser. [``MIT``][MIT] 926 | * [WJElement][77] - Advanced JSON manipulation library, with support for JSON 927 | Schema. [``LGPL-2.0-or-later``][LGPL-2.0-or-later] or 928 | [``LGPL-2.1-or-later``][LGPL-2.1-or-later] or [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 929 | * [YAJL][60] - Fast streaming JSON parser library. [``ISC``][ISC] 930 | 931 | ### INI ### 932 | 933 | * [inih][547] - Small and simple INI file parser, good for embedded systems. [``BSD-3-Clause``][BSD-3-Clause] 934 | * [iniparser][336] - Parser for .ini files. [``MIT``][MIT] 935 | * [libconfini][122] - Yet another INI parser. [``GPL-3.0-only``][GPL-3.0-only] 936 | * [minIni][109] - Small and portable INI parser. [``Apache-2.0``][Apache-2.0] 937 | 938 | ### Others ### 939 | 940 | * [libbson][235] - BSON utility library. [``Apache-2.0``][Apache-2.0] 941 | * [libcbor][573]: CBOR protocol implementation for C and others. [``MIT``][MIT] 942 | * [libconfuse][135] - Small configuration file parser library. [``ISC``][ISC] 943 | * [libelf][310] - Simple library for parsing ELF files. [``MIT``][MIT] 944 | * [libucl][239] - Universal configuration library parser. [``BSD-2-Clause``][BSD-2-Clause] 945 | * [libxo][407] - Allows an application to generate plain text, XML, JSON and 946 | HTML output using a common set of function calls. The application decides at runtime what output style should be produced. [``BSD-2-Clause``][BSD-2-Clause] 947 | 948 | ### XML ### 949 | 950 | * [Expat][89] - Stream-oriented XML parser. [MIT][MIT] 951 | * [libxml2][62] - Standards-compliant, portable XML parser. [MIT][MIT] 952 | * [xml][569] - Simple, low-memory-use XML parser / tokenizer. [``MIT``][MIT] 953 | 954 | ### YAML ### 955 | 956 | * [libYAML][341] - YAML 1.1 parser and emitter. [``MIT``][MIT] 957 | 958 | ## Signal Processing ## 959 | 960 | * [libsigrok][601] - signal analysis software suite that supports various 961 | device types (such as logic analyzers, oscilloscopes, multimeters, and more). [``GPL``][GPL] 962 | 963 | ## Testing ## 964 | 965 | * [CHEAT][84] - Simple unit testing framework. [``BSD-2-Clause``][BSD-2-Clause] 966 | * [Check][59] - Unit testing framework. [``LGPL-2.1-only``][LGPL-2.1-only] 967 | * [ciut][5] - A modern minimal hassle unit test framework. [``MIT``][MIT] 968 | * [clar][470] - Clear and simple unit testing framework. [``MIT``][MIT] 969 | * [CMock][297] - Mock/stub generator. [``MIT``][MIT] 970 | * [cmocka][141] - Unit testing framework with support for mock objects. [``Apache-2.0``][Apache-2.0] 971 | * [Criterion][246] - KISS, non-intrusive test framework. [``MIT``][MIT] 972 | * [ctest][503] - Yet another unit testing framework. [``Apache-2.0``][Apache-2.0] 973 | * [CUnit][94] - Another unit testing framework. 974 | [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 975 | * [greatest][58] - Unit testing library in one file, with no memory 976 | allocation. [``ISC``][ISC] 977 | * [minctest][394] - Unit testing microlibrary. [``BSD-3-Clause``][BSD-3-Clause] 978 | * [munit][392] - Small unit testing framework. [``MIT``][MIT] 979 | * [Nala][560] - A test framework for C projects. [``MIT``][MIT] 980 | * [Rexo][563] - Framework for C89/C++ featuring automatic registration of tests and a polished API. [``Unlicense``][Unlicense] 981 | * [Tau][609] - A Micro Unit testing framework for C/C++ (~1k lines of code). Includes a rich set of assertion macros, supports automatic test 982 | registration and can output to multiple formats, like the TAP format or JUnit XML. Supported on Linux, macOS, FreeBSD, and Windows. [``MIT``][MIT] 983 | * [theft][302] - Property-based testing (similar to [Quickcheck][301]). [``MIT``][MIT] 984 | * [Unity][296] - Simple unit testing framework. [``MIT``][MIT] 985 | * [utest][386] - Single-header unit testing library. [``Unlicense``][Unlicense] 986 | 987 | ## Text Editor Extensions ## 988 | 989 | While practically any decent programmer's text editor supports C, there are some 990 | extensions that make it more pleasant. These are labelled by editor. 991 | 992 | * [CCompletion][92] - Notepad++ autocompletion plugin. Works with all 993 | identifiers recognized by Ctags. This is a download link. [``GPL-2.0-or-later``][GPL-2.0-or-later] 994 | * [CEDET][250] - Collection of Emacs Development Environment Tools; designed to 995 | provide IDE-like features to Emacs. Built-in. 996 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 997 | * [Flycheck][149] - Modern syntax checking for Emacs. For C, it can use either 998 | GCC or Clang as a back-end. [``GPL-3.0-or-later``][GPL-3.0-or-later] 999 | * [Neomake][441] - Async :make and linting framework for Neovim/Vim. [``MIT``][MIT] 1000 | * [Syntastic][186] - Syntax checking and linting for Vim. [``WTFPL``][WTFPL] 1001 | * [YASnippet][150] - Emacs code template system, with C templates for common 1002 | snippets. [``GPL-3.0-or-later``][GPL-3.0-or-later] 1003 | * [YouCompleteMe][151] - Code completion engine for Vim. 1004 | [``GPL-3.0-only``][GPL-3.0-only] 1005 | 1006 | ## Tools ## 1007 | 1008 | Useful programs to help you write and debug C code which are *not* editors, 1009 | libraries or compilers. 1010 | 1011 | * [Artistic Style][314] - Fast and small automatic source code formatter that 1012 | supports C. [``LGPL-3.0-only``][LGPL-3.0-only] 1013 | * [address-sanitizer][288] - Fast memory error detector. 1014 | [``Apache-2.0``][Apache-2.0] 1015 | * [bcc][619] - A byte array generator to import binary files directy from C in 1016 | the spirit of xxd. [``ISC``][ISC] 1017 | * [c][276] - Compile and execute C "scripts" in one go on the command line. Also 1018 | has shebang support. [``MIT``][MIT] 1019 | * [c99sh][113] - Run C files using hash-bang. [``BSD-2-Clause``][BSD-2-Clause] 1020 | * [cdecl][347] - Online service to translate C declarations into English and 1021 | vice versa. Public domain. 1022 | * [cinclude2dot][280] - Graphs include dependencies in a project using 1023 | Graphviz. [GPL-1.0-or-later][335] or [``GPL-2.0-or-later``][GPL-2.0-or-later] or 1024 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 1025 | * [ClangCheck][502] - Static analysis tool, designed to work with Clang. 1026 | [``NCSA``][NCSA] 1027 | * [conan.io][304] - Something of a package manager for C. [``MIT``][MIT]. 1028 | * [Cppcheck][501] - Static analysis tool. Despite the name, works well with C. 1029 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 1030 | * [Glade][328] - RAD tool to enable quick development of GTK+ 1031 | GUIs. [``GPL-2.0-only``][GPL-2.0-only] 1032 | * [GMSL][331] - GNU Make Standard Library; a collection of additional 1033 | functionality for GNU Make. [``BSD-3-Clause``][BSD-3-Clause] 1034 | * [GNU Global][330] - Source code tagging tool. [``GPL-3.0-only``][GPL-3.0-only] 1035 | * [GPP][269] - General-purpose preprocessor. More versatile than the C 1036 | preprocessor, but more flexible than m4. 1037 | [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 1038 | * [Highlight][333] - Converts source code to formatted text with nice 1039 | highlighting. [``GPL-3.0-only``][GPL-3.0-only] 1040 | * [include-what-you-use][289] - Helps find unecessary inclusions and make 1041 | suggestions for fixing them. Based on LLVM/Clang (and only works with 1042 | it). [``NCSA``][NCSA] 1043 | * [incbin][592] - Include binary files in your C/C++ applications with ease [``Unlicense``][Unlicense] 1044 | * [indent][315] - Formats C source code automatically to make it easier to 1045 | read. Also converts from one style of source to another. [``GPL-3.0-or-later``][GPL-3.0-or-later] 1046 | * [SMACK][500] - Modular software verification toolchain and a self-contained 1047 | software verifier. Currently only works with programs compiled using Clang. 1048 | [``MIT``][MIT] 1049 | * [unifdef][290] - Removes #ifdef and #if directives with their delimited text 1050 | without touching any other part of the file. [``BSD-3-Clause``][BSD-3-Clause] or 1051 | [``BSD-2-Clause``][BSD-2-Clause] 1052 | 1053 | ## Utilities ## 1054 | 1055 | A 'catch-all' category for anything that doesn't fit well anywhere else. 1056 | 1057 | * [ApeTagLibs][345] - Library for working with APEv2 tags. [``MIT``][MIT] 1058 | * [argparse][413] - Command-line argument parsing library, inspired by 1059 | Python's argparse module. [``MIT``][MIT] 1060 | * [attr][425] - Commands for manipulating filesystem extended 1061 | attributes. [``GPL-2.0-or-later``][GPL-2.0-or-later] 1062 | * [bfd][157] - Library for manipulating binary object files. Part of GNU 1063 | binutils. [``GPL-3.0-or-later``][GPL-3.0-or-later] 1064 | * [Caffeine][496] - Library for building daemons and services for Linux and 1065 | FreeBSD systems. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 1066 | * [CException][298] - Implementation of exceptions. [``MIT``][MIT] 1067 | * [CommonMark][223] - Implementation of the CommonMark spec. 1068 | * [cosmopolitan][597] - fast portable static native textmode containers (build C programs for Linux\Mac\Windows in one go) 1069 | [Variety of licenses, all open source][224]. 1070 | * [cpu\_features][319] - Get CPU features at runtime. [``Apache-2.0``][Apache-2.0]. 1071 | * [CRIU][440] - Checkpoint/Restore In Userspace; a software tool (with a C API) 1072 | for 'freezing' a running application to disk, then restoring 1073 | it. [``GPL-2.0-only``][GPL-2.0-only] or [``LGPL-2.1-only``][LGPL-2.1-only] 1074 | * [D-Bus][430] - Simple way for applications to talk to one 1075 | another. [``AFL-2.1``][AFL-2.1] or [``GPL-2.0-or-later``][GPL-2.0-or-later] 1076 | * [Discount][438] - Simple implementation of a Markdown parser. [``BSD-3-Clause``][BSD-3-Clause] 1077 | * [dlx][388] - Implementation of [Knuth's Algorithm X][389], with example 1078 | solvers. [``GPL-3.0-or-later``][GPL-3.0-or-later] 1079 | * [docopt.c][270] - Implementation of a command-line option parser. [``MIT``][MIT] 1080 | * [dyncall][281] - Another foreign function interface library. [``MIT``][MIT] 1081 | * [GNU FreeIPMI][158] - In-band and out-of-band IPMI 1082 | implementation. [``GPL-3.0-only``][GPL-3.0-only] 1083 | * [GNU gperf][351] - Perfect hash function generator, given a list of 1084 | strings. Outputs C code. [``GPL-3.0-or-later``][GPL-3.0-or-later] 1085 | * [GNU Libffcall][162] - Collection of libraries for building foreign function 1086 | interfaces. [``GPL-3.0-or-later``][GPL-3.0-or-later] 1087 | * [Hoedown][405] - Fully standards-compliant, extension-supporting, UTF-8 1088 | aware, fast Markdown parser. [``MIT``][MIT] 1089 | * [Kitsune][355] - Efficient, general-purpose framework for dynamic software 1090 | updating. [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 1091 | * [libCello][96] - Library introducing higher-level programming to 1092 | C. [``BSD-3-Clause``][BSD-3-Clause] 1093 | * [libcmark][436] - Library for parsing the CommonMark dialect of 1094 | Markdown. [``BSD-2-Clause``][BSD-2-Clause] 1095 | * [libcoap][136] - Implementation of the [Constrained Application Protocol][117]. 1096 | [``GPL-2.0-or-later``][GPL-2.0-or-later] or [``BSD-2-Clause``][BSD-2-Clause] 1097 | * [libcox][373] - Library which permits cross-platform system calls and 1098 | standard utilities across different operating systems. 1099 | [``BSD-2-Clause``][BSD-2-Clause] 1100 | * [libffi][128] - Portable foreign-function interface library. [``MIT``][MIT] 1101 | * [libgeohash][499] - Pure C implementation of the Geohash algorithm. 1102 | [``BSD-3-Clause``][BSD-3-Clause] 1103 | * [libgit2][61] - Portable implementation of the Git core methods, provided as a 1104 | re-entrant linkable library. [Custom license][41]. 1105 | * [libgss][161] - Generic Security Service. 1106 | [``GPL-3.0-or-later``][GPL-3.0-or-later] 1107 | * [libimobiledevice][354] - Cross-platform protocol library to communicate 1108 | with iThings. [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 1109 | * [libnfc][332] - Platform-independent Near-Field Communication 1110 | library. [``LGPL-3.0-only``][LGPL-3.0-only] 1111 | * [libpostal][434] - Library for parsing and normalization of street addresses 1112 | around the world. Powered by statistical NLP and open geo data. [``MIT``][MIT] 1113 | * [libtrading][455] - Implementation of network protocols for communicating 1114 | with exchanges, dark pools and other trading venues. Supports FIX, FIX/FAST 1115 | and many proprietary protocols. [``BSD-2-Clause``][BSD-2-Clause] 1116 | * [libusb][306] - Provides generic access to USB devices. 1117 | [``LGPL-2.1-or-later``][LGPL-2.1-or-later] 1118 | * [libuv][56] - Cross-platform asynchronous I/O. [``MIT``][MIT] 1119 | * [libvldmail][3] - Your friendly email validation library. No external 1120 | dependencies (not even regexps). [``WTFPL``][WTFPL] 1121 | * [linenoise][504] - Small, self-contained alternative to readline and 1122 | libedit. [``BSD-2-Clause``][BSD-2-Clause] 1123 | * [libXDGdirs][589] - An implementation of XDG Base Directory Specification 1124 | [``MIT``][MIT] 1125 | * [MegaMimes][31] - Library for getting the [MIME][30] types of a file. 1126 | [``MIT``][MIT] 1127 | * [ncurses][178] - Coloured terminal UI library. [``MIT``][MIT] 1128 | * [netbsd-curses][494] - Simplified and small version of ncurses, with the same 1129 | interface. [``BSD-3-Clause``][BSD-3-Clause] 1130 | * [nope.c][209] - Ultra-light software platform for scalable server-side and 1131 | networking applications (think node.js for C programmers). [``GPL-2.0-only``][GPL-2.0-only] 1132 | * [obj.h][580] - A single-header supports OOP in pure C. [``MIT``][MIT] 1133 | * [parg][274] - A single-file reimplementation of ``getopt`` with better defaults. 1134 | [``CC0-1.0``][CC0-1.0] 1135 | * [pbc][236] - Protocol buffers library. [``MIT``][MIT] 1136 | * [progressbar][453] - Easy-to-use library for displaying text progress bars. 1137 | [``BSD-3-Clause``][BSD-3-Clause] 1138 | * [rabbitmq-c][228] - Client library for [RabbitMQ][229]. [``MIT``][MIT] 1139 | * [Ragel][54] - DSL for state machines that compiles to C. [``GPL-2.0-only``][GPL-2.0-only] 1140 | * [rmw][622] - safe-remove utility for the command line that can purge items from your waste directories after x number of days. [``GPL-3.0-or-later``][GPL-3.0-or-later] 1141 | * [Rogueutil][565] - Cross-platform library for creating text-based user 1142 | interfaces (TUI) [``Apache-2.0``][Apache-2.0] 1143 | * [sort][190] - Collection of sorting routines, which type-specialize at 1144 | compile-time with a user-defined type. [``MIT``][MIT] 1145 | * [termbox][396] - Library for writing text-based interfaces. [``MIT``][MIT] 1146 | * [tinyexpr][395] - Tiny recursive-descent parser, compiler and evaluation 1147 | engine for simple mathematical expressions. [``BSD-3-Clause``][BSD-3-Clause] 1148 | * [tm][543] - ⏱ Timer and Timeline Utils for C. [``MIT``][MIT] 1149 | * [Tulip Indicators][449] - Library of functions for technical analysis of 1150 | financial data. [``LGPL-3.0-or-later``][LGPL-3.0-or-later] 1151 | * [whereami][167] - One-file library for locating the current executable on the 1152 | file system. [``WTFPL``][WTFPL] 1153 | * [XLSX I/O][344] - Cross-platform library for reading and writing .xlsx 1154 | files. [``MIT``][MIT] 1155 | * [xlsx_drone][596] - Fast Microsoft Excel's *.xlsx reader. [``MIT``][MIT] 1156 | * [zlog][437] - Reliable, pure C logging library. 1157 | [``LGPL-2.1-only``][LGPL-2.1-only] 1158 | * [zproto][421] - Protocol framework for ZeroMQ. [``MIT``][MIT] 1159 | * [Metalang99][603] - Full-blown preprocessor metaprogramming. [``MIT``][MIT] 1160 | * [Datatype99][604] - Algebraic data types for C99. [``MIT``][MIT] 1161 | * [EasyLogger][706] - An ultra-lightweight, high-performance C/C++ log library. [``MIT``][MIT] 1162 | 1163 | ## Web Frameworks ## 1164 | 1165 | Comprehensive and integrated solutions for building the next brilliant web 1166 | application in C. 1167 | 1168 | * [Concord][617] - A Discord API wrapper library written in C. [``MIT``][MIT] 1169 | * [facil.io][118] - Mini-framework for web applications. Includes a fast HTTP and 1170 | Websocket server, and also supports custom protocols. [``MIT``][MIT] 1171 | * [kcgi][562] - CGI and FastCGI library for C [``ISC``][ISC]. 1172 | * [KLone][423] - Fully featured, multi-platform, web application development 1173 | framework, targeted especially at embedded systems and 1174 | appliances. [``BSD-3-Clause``][BSD-3-Clause] 1175 | * [Kore][415] - Easy-to-use web application framework for writing scalable 1176 | web APIs in C. [``ISC``][ISC] 1177 | 1178 | ## Windows Environments ## 1179 | 1180 | Technologies designed to bring Windows into the 21st century with respect to 1181 | support for C. 1182 | 1183 | * [Cygwin][253] - Designed to emulate a POSIX-compatible environment extensively 1184 | under Windows. [Various licenses, all open source][254]. 1185 | * [MinGW-w64][287] - Minimalist environment for C development on Windows with 1186 | 64 bit support. [Various licenses, all open source][252]. 1187 | * [MSYS2][428] - Minimal SYStem 2; aims to provide support for a POSIX 1188 | environment on Windows, with a package manager based on Arch Linux's 1189 | pacman. Packages have individual licenses, otherwise, as MinGW and Cygwin. 1190 | 1191 | 1192 | [AFL-2.1]: https://spdx.org/licenses/AFL-2.1.html 1193 | [AGPL-3.0-only]: https://spdx.org/licenses/AGPL-3.0-only.html 1194 | [AGPL-3.0-or-later]: https://spdx.org/licenses/AGPL-3.0-or-later.html 1195 | [Apache-2.0]: https://spdx.org/licenses/Apache-2.0.html 1196 | [BSD-1-Clause]: https://spdx.org/licenses/BSD-1-Clause.html 1197 | [BSD-2-Clause]: https://spdx.org/licenses/BSD-2-Clause.html 1198 | [BSD-3-Clause]: https://spdx.org/licenses/BSD-3-Clause.html 1199 | [BSD-4-Clause]: https://spdx.org/licenses/BSD-4-Clause.html 1200 | [CC0-1.0]: https://spdx.org/licenses/CC0-1.0.html 1201 | [curl]: https://spdx.org/licenses/curl.html 1202 | [GPL-2.0-only]: https://spdx.org/licenses/GPL-2.0-only.html 1203 | [GPL-2.0-or-later]: https://spdx.org/licenses/GPL-2.0-or-later.html 1204 | [GPL-3.0-only]: https://spdx.org/licenses/GPL-3.0-only.html 1205 | [GPL-3.0-or-later]: https://spdx.org/licenses/GPL-3.0-or-later.html 1206 | [ICU]: https://spdx.org/licenses/ICU.html 1207 | [ISC]: https://spdx.org/licenses/ISC.html 1208 | [LGPL-2.0-or-later]: https://spdx.org/licenses/LGPL-2.0-or-later.html 1209 | [LGPL-2.1-only]: https://spdx.org/licenses/LGPL-2.1-only.html 1210 | [LGPL-2.1-or-later]: https://spdx.org/licenses/LGPL-2.1-or-later.html 1211 | [LGPL-3.0-only]: https://spdx.org/licenses/LGPL-3.0-only.html 1212 | [LGPL-3.0-or-later]: https://spdx.org/licenses/LGPL-3.0-or-later.html 1213 | [Libpng]: https://spdx.org/licenses/Libpng.html 1214 | [MIT]: https://spdx.org/licenses/MIT.html 1215 | [MPL-2.0]: https://spdx.org/licenses/MPL-2.0.html 1216 | [NCSA]: https://spdx.org/licenses/NCSA.html 1217 | [OLDAP-2.8]: https://spdx.org/licenses/OLDAP-2.8.html 1218 | [PostgreSQL]: https://spdx.org/licenses/PostgreSQL.html 1219 | [TCL]: https://spdx.org/licenses/TCL.html 1220 | [Unlicense]: https://spdx.org/licenses/Unlicense.html 1221 | [WTFPL]: https://spdx.org/licenses/WTFPL.html 1222 | [X11]: https://spdx.org/licenses/X11.html 1223 | [Zlib]: https://spdx.org/licenses/Zlib.html 1224 | 1225 | [1]: https://github.com/Dead2/zlib-ng 1226 | [2]: https://github.com/Cyan4973/FiniteStateEntropy 1227 | [3]: https://github.com/dertuxmalwieder/libvldmail 1228 | [4]: https://github.com/aosp-mirror/platform_bionic 1229 | [5]: https://github.com/yhfudev/cpp-ci-unit-test.git 1230 | [6]: https://port70.net/~nsz/c/c89/c89-draft.html 1231 | [7]: https://en.wikipedia.org/wiki/The_C_Programming_Language 1232 | [8]: https://github.com/json-c/json-c 1233 | [9]: https://www.fefe.de/dietlibc/ 1234 | [10]: https://musl.libc.org/ 1235 | [11]: https://tools.ietf.org/html/rfc7159 1236 | [12]: https://uclibc-ng.org/ 1237 | [13]: https://opensource.org/osd 1238 | [14]: https://www.gtk.org/ 1239 | 1240 | [16]: http://webserver2.tecgraf.puc-rio.br/iup/ 1241 | [17]: https://github.com/saitoha/libsixel 1242 | [18]: https://www.enlightenment.org?p=about%252Flibs 1243 | [19]: http://www.tcl.tk/ 1244 | 1245 | [21]: http://xforms-toolkit.org/ 1246 | [22]: https://www.sqlite.org/ 1247 | [23]: https://unqlite.org/ 1248 | [24]: https://github.com/google/brotli 1249 | [25]: https://en.wikipedia.org/wiki/Dynamic_array 1250 | [26]: https://github.com/clibs/clib 1251 | [27]: https://github.com/clibs/clib/wiki/Packages 1252 | [28]: http://www.koanlogic.com/libu/ 1253 | [29]: https://github.com/antirez/sds 1254 | [30]: https://en.wikipedia.org/wiki/MIME 1255 | [31]: https://trumpowen.github.io/MegaMimes 1256 | [32]: https://github.com/kgabis/parson 1257 | [33]: https://www.codeproject.com/Articles/6154/Writing-Efficient-C-and-C-Code-Optimization 1258 | [34]: http://re2c.org/index.html 1259 | [35]: http://shop.oreilly.com/product/0636920033677.do 1260 | [36]: http://shop.oreilly.com/product/0636920028000.do 1261 | [37]: https://www.openmp.org/ 1262 | [38]: https://clang.llvm.org/ 1263 | [39]: https://github.com/recp/json 1264 | [40]: https://gcc.gnu.org/ 1265 | [41]: https://github.com/libgit2/libgit2/blob/master/COPYING 1266 | [42]: http://anjuta.org/ 1267 | [43]: https://www.geany.org/ 1268 | [44]: https://www.kdevelop.org/ 1269 | [45]: https://www.codelite.org/ 1270 | [46]: https://www.gnu.org/software/gnulib/ 1271 | [47]: https://www.gnu.org/software/gsl/ 1272 | [48]: https://liballeg.org 1273 | [49]: https://github.com/vasi/pixz 1274 | [50]: https://www.libsdl.org/ 1275 | [51]: https://redis.io/ 1276 | [52]: http://zeromq.org/ 1277 | [53]: http://www.digip.org/jansson/ 1278 | [54]: http://www.colm.net/open-source/ragel/ 1279 | [55]: https://dl.acm.org/citation.cfm?id=179241 1280 | [56]: http://libuv.org 1281 | [57]: https://www.gnu.org/software/libc/ 1282 | [58]: https://github.com/silentbicycle/greatest 1283 | [59]: https://libcheck.github.io/check 1284 | [60]: https://lloyd.github.io/yajl/ 1285 | [61]: https://libgit2.org/ 1286 | [62]: http://xmlsoft.org/ 1287 | [63]: https://www.ffmpeg.org/ 1288 | [64]: http://knking.com/books/c2/index.html 1289 | [65]: https://curl.haxx.se/libcurl/ 1290 | [66]: https://github.com/Snaipe/libcsptr 1291 | [67]: http://site.icu-project.org/ 1292 | [68]: https://libspng.org/ 1293 | [69]: https://lodev.org/lodepng/ 1294 | [70]: http://www.fftw.org/ 1295 | [71]: https://sourceforge.net/projects/kissfft/ 1296 | [72]: https://bitbucket.org/MDukhan/yeppp 1297 | [73]: https://graphics.stanford.edu/~seander/bithacks.html 1298 | [74]: http://pcc.ludd.ltu.se/ 1299 | [75]: http://pcc.ludd.ltu.se/licenses/ 1300 | [76]: http://attractivechaos.github.io/klib/#About 1301 | [77]: https://github.com/netmail-open/wjelement/ 1302 | [78]: http://apr.apache.org/ 1303 | [79]: https://gmplib.org/ 1304 | [80]: https://github.com/cesanta/slre 1305 | [81]: http://tiny-rex.sourceforge.net/ 1306 | [82]: https://github.com/laurikari/tre/ 1307 | [83]: http://www.pcre.org/ 1308 | [84]: https://github.com/Tuplanolla/cheat 1309 | [85]: http://www.valgrind.org/ 1310 | [86]: https://www.gnu.org/software/binutils/ 1311 | [87]: https://www.gnu.org/software/gdb/ 1312 | [88]: https://fragglet.github.io/c-algorithms 1313 | [89]: http://expat.sourceforge.net/ 1314 | [90]: https://www.sfml-dev.org/download/csfml/ 1315 | [91]: https://www.sfml-dev.org/index.php 1316 | [92]: http://freeweb.siol.net/rmihor/NppCCompletionPlugin.zip 1317 | [93]: https://github.com/keybuk/libnih 1318 | [94]: http://cunit.sourceforge.net/ 1319 | [95]: https://rr-project.org/ 1320 | [96]: http://libcello.org/ 1321 | [97]: http://nethack4.org/projects/aimake/ 1322 | [98]: https://www.glfw.org/ 1323 | [99]: http://freeglut.sourceforge.net 1324 | [100]: https://uriparser.github.io 1325 | [101]: https://github.com/orangeduck/Corange 1326 | [102]: http://shop.oreilly.com/product/0636920015482.do 1327 | [103]: http://ccodearchive.net/ 1328 | [104]: http://ccodearchive.net/list.html 1329 | [105]: https://www.symas.com/lmdb 1330 | [106]: https://nanomsg.github.io/nng/ 1331 | [107]: https://ioquake3.org 1332 | [108]: https://github.com/RandyGaul/tinyheaders 1333 | [109]: https://github.com/compuphase/minIni 1334 | [110]: https://www.openssl.org/ 1335 | [111]: https://www.openssl.org/source/license.html 1336 | [112]: http://www.gnutls.org/ 1337 | [113]: https://github.com/RhysU/c99sh 1338 | [114]: https://github.com/nothings/stb 1339 | [115]: https://tinycthread.github.io/ 1340 | [116]: http://mike.steinert.ca/bstring/ 1341 | [117]: http://coap.technology/ 1342 | [118]: http://facil.io/ 1343 | [119]: https://www.enlightenment.org 1344 | [120]: https://zserge.com/jsmn.html 1345 | [121]: https://www.postgresql.org/ 1346 | [122]: https://madmurphy.github.io/libconfini/html/index.html 1347 | [123]: https://gstreamer.freedesktop.org/ 1348 | [124]: http://libevent.org/ 1349 | [125]: https://www.hboehm.info/gc/ 1350 | [126]: https://github.com/rampantpixels/rpmalloc 1351 | [127]: https://h2o.examp1e.net/ 1352 | [128]: https://github.com/atgreen/libffi 1353 | [129]: https://github.com/protobuf-c/protobuf-c 1354 | [130]: https://github.com/jmckaskill/c-capnproto 1355 | [131]: https://en.wikipedia.org/wiki/External_Data_Representation 1356 | [132]: https://bitbucket.org/martijnj/msgpackalt 1357 | [133]: http://www.netlib.org/lapack/lapacke.html 1358 | [134]: http://www.netlib.org/lapack/ 1359 | [135]: https://github.com/martinh/libconfuse 1360 | [136]: https://github.com/obgm/libcoap 1361 | [137]: http://math-atlas.sourceforge.net/ 1362 | [138]: http://lionet.info/asn1c/compiler.html 1363 | [139]: https://github.com/nanomsg/nanomsg 1364 | [140]: http://avro.apache.org/docs/current/api/c/index.html#_introduction_to_avro_c 1365 | [141]: https://cmocka.org/ 1366 | [142]: https://gnupg.org/related_software/libgcrypt 1367 | [143]: https://github.com/libressl-portable/ 1368 | [144]: http://software.schmorp.de/pkg/libev.html 1369 | [145]: https://google.github.io/flatbuffers/ 1370 | [146]: https://en.wikipedia.org/wiki/POSIX_Threads 1371 | [147]: https://www.opengl.org/ 1372 | [148]: http://www.sgi.com/tech/opengl/?/license.html 1373 | [149]: https://github.com/flycheck/flycheck 1374 | [150]: http://joaotavora.github.io/yasnippet/ 1375 | [151]: https://github.com/ycm-core/YouCompleteMe 1376 | [152]: https://sites.google.com/site/lccretargetablecompiler/ 1377 | [153]: https://github.com/drh/lcc/blob/master/CPYRIGHT 1378 | [154]: https://github.com/swenson/vector.h 1379 | [155]: https://www.gnu.org/software/adns/ 1380 | [156]: http://adtinfo.org/libavl.html/index.html 1381 | [157]: http://sourceware.org/binutils/docs/bfd/ 1382 | [158]: https://gnu.org/software/freeipmi/index.html 1383 | [159]: https://gnu.org/software/glpk/ 1384 | [160]: https://gnu.org/software/gsasl/ 1385 | [161]: https://gnu.org/software/gss/ 1386 | [162]: https://gnu.org/software/libffcall/ 1387 | [163]: https://gnu.org/software/libiconv/ 1388 | [164]: https://gnu.org/software/libidn/ 1389 | [165]: https://gnu.org/software/libmicrohttpd/ 1390 | [166]: https://www.hughes.com.au/products/libhttpd/ 1391 | [167]: https://github.com/gpakosz/whereami 1392 | [168]: http://www.webdav.org/neon/ 1393 | [169]: http://mihl.sourceforge.net/ 1394 | [170]: https://www.coralbits.com/libonion/ 1395 | [171]: https://cesanta.com 1396 | [172]: https://risoflora.github.io/libsagui/ 1397 | [173]: https://gnu.org/software/libunistring/ 1398 | [174]: https://gnu.org/software/libxmi/ 1399 | [175]: http://www.multiprecision.org/mpc/ 1400 | [176]: http://mpfr.loria.fr/index.html 1401 | [177]: https://gnu.org/software/mpria/ 1402 | [178]: https://gnu.org/software/ncurses/ 1403 | [179]: https://gnu.org/software/osip/ 1404 | [180]: https://gnu.org/software/pth/ 1405 | [181]: https://savedparadigms.files.wordpress.com/2014/09/harbison-s-p-steele-g-l-c-a-reference-manual-5th-ed.pdf 1406 | [182]: http://shop.oreilly.com/product/9780596004361.do 1407 | [183]: http://shop.oreilly.com/product/0636920026136.do 1408 | [184]: https://www.pearson.com/us/higher-education/program/Prata-C-Primer-Plus-6th-Edition/PGM4399.html 1409 | [185]: http://www.planetpdf.com/codecuts/pdfs/ooc.pdf 1410 | [186]: https://github.com/vim-syntastic/syntastic 1411 | [187]: https://github.com/dvidelabs/flatcc 1412 | [188]: http://apophenia.info 1413 | [189]: https://github.com/b-k/apophenia/blob/master/install/COPYING 1414 | [190]: https://github.com/swenson/sort 1415 | [191]: http://steve-yegge.blogspot.co.nz/2008/10/universal-design-pattern.html 1416 | [192]: http://libjpeg.sourceforge.net/ 1417 | [193]: https://libjpeg-turbo.virtualgl.org/ 1418 | [194]: https://www.libjpeg-turbo.org/About/License 1419 | [195]: http://libccv.org/ 1420 | [196]: https://github.com/google/gumbo-parser 1421 | [197]: https://llhttp.org 1422 | [198]: https://download.libsodium.org/doc 1423 | [199]: https://lwan.ws 1424 | [200]: https://github.com/mozilla/mozjpeg 1425 | [201]: https://github.com/redis/hiredis 1426 | [202]: https://jvns.ca/blog/2014/12/14/fun-with-threads/ 1427 | [203]: https://github.com/silentbicycle/socket99 1428 | [204]: http://danluu.com/malloc-tutorial/ 1429 | [205]: https://web.archive.org/web/20170620131430/https://www.tedunangst.com/flak/post/memcpy-vs-memmove 1430 | [206]: https://blogs.oracle.com/linux/8-gdb-tricks-you-should-know-v2 1431 | [207]: https://www.youtube.com/playlist?list=PLLX-Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG 1432 | [208]: http://nethack4.org/blog/building-c.html 1433 | [209]: https://github.com/riolet/WAFer 1434 | [210]: https://docs.google.com/presentation/d/1h49gY3TSiayLMXYmRMaAEMl05FaJ-Z6jDOWOz3EsqqQ/edit?pli=1#slide=id.gaf50702c_0153 1435 | [212]: http://www.crasseux.com/books/ctut.pdf 1436 | [213]: https://pdos.csail.mit.edu/6.828/2017/readings/pointers.pdf 1437 | [214]: https://github.com/adamierymenko/huffandpuff 1438 | [215]: https://sourceforge.net/projects/vtd-xml/ 1439 | [216]: https://michaelrsweet.github.io?Z3 1440 | [217]: http://svn.msweet.org/mxml/trunk/COPYING 1441 | [218]: http://ezxml.sourceforge.net/ 1442 | [219]: https://github.com/blunderer/libroxml 1443 | [220]: https://github.com/DanielGibson/Snippets/ 1444 | [221]: https://github.com/id-Software/Quake-2 1445 | [222]: http://www.etpan.org 1446 | [223]: https://github.com/commonmark/commonmark-spec 1447 | [224]: https://github.com/commonmark/commonmark-spec/blob/master/LICENSE 1448 | [225]: https://github.com/id-Software/Quake 1449 | [226]: http://czmq.zeromq.org 1450 | [227]: https://marek.vavrusa.com/memory/ 1451 | [228]: https://github.com/alanxz/rabbitmq-c 1452 | [229]: http://www.rabbitmq.com/ 1453 | [230]: http://zlib.net 1454 | [231]: https://github.com/libretro/RetroArch 1455 | [232]: https://www.libretro.com/ 1456 | [233]: http://mongoc.org/ 1457 | [234]: https://www.mongodb.org/ 1458 | [235]: https://github.com/mongodb/libbson 1459 | [236]: https://github.com/cloudwu/pbc 1460 | [237]: https://github.com/sinemetu1/twitc 1461 | [238]: https://github.com/orangeduck/mpc 1462 | [239]: https://github.com/vstakhov/libucl 1463 | [240]: http://snaipe.me/c/c-smart-pointers/ 1464 | [241]: https://github.com/gpakosz/PackedArray 1465 | [242]: http://concurrencykit.org 1466 | [243]: http://repo.hu/projects/cchan/ 1467 | [244]: http://sophia.systems 1468 | [245]: http://www.greenend.org.uk/rjk/tech/inline.html 1469 | [246]: https://criterion.readthedocs.io/en/master 1470 | [247]: https://port70.net/~nsz/c/c11/n1570.html 1471 | [248]: https://en.wikibooks.org/wiki/C_Programming 1472 | [249]: http://www.codeblocks.org/ 1473 | [250]: http://cedet.sourceforge.net/ 1474 | [251]: http://mingw.org/ 1475 | [252]: http://mingw.org/license 1476 | [253]: https://cygwin.com/ 1477 | [254]: https://cygwin.com/licensing.html 1478 | [255]: http://flintlib.org/ 1479 | [256]: http://pari.math.u-bordeaux.fr/ 1480 | [257]: http://blog.noctua-software.com/c-tricks.html 1481 | [258]: https://port70.net/~nsz/c/c99/n1256.html 1482 | [259]: https://spdx.org/licenses/EPL-1.0.html 1483 | [260]: https://netbeans.org/ 1484 | [261]: https://github.com/JonnyWhatshisface/libwebsock 1485 | [262]: http://c-faq.com/ 1486 | [263]: https://computing.llnl.gov/tutorials/pthreads/ 1487 | [264]: https://computing.llnl.gov/tutorials/openMP/ 1488 | [265]: https://computing.llnl.gov/tutorials/mpi/ 1489 | [266]: https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard 1490 | [267]: http://blog.pkh.me/p/20-templating-in-c.html 1491 | [268]: http://lipforge.ens-lyon.fr/www/crlibm/index.html 1492 | [269]: https://logological.org/gpp 1493 | [270]: https://github.com/docopt/docopt.c 1494 | [271]: https://xmake.io/ 1495 | [273]: http://troydhanson.github.io/uthash/ 1496 | [274]: https://github.com/jibsen/parg 1497 | [275]: http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html 1498 | [276]: https://github.com/ryanmjacobs/c 1499 | [277]: http://wolkykim.github.io/qlibc 1500 | [278]: https://github.com/wolkykim/qlibc/blob/master/LICENSE 1501 | [279]: https://gist.github.com/eatonphil/21b3d6569f24ad164365 1502 | [280]: https://www.flourish.org/cinclude2dot/ 1503 | [281]: http://www.dyncall.org/ 1504 | [282]: http://www.mcs.anl.gov/petsc/ 1505 | [283]: http://slepc.upv.es/ 1506 | [284]: https://github.com/open-mpi/ompi 1507 | [285]: http://www.mpich.org/ 1508 | [286]: http://git.mpich.org/mpich.git/blob_plain/6aab201f58d71fc97f2c044d250389ba86ac1e3c:/COPYRIGHT 1509 | [287]: http://mingw-w64.yaxm.org/doku.php/start 1510 | [288]: https://github.com/google/sanitizers 1511 | [289]: https://github.com/include-what-you-use/include-what-you-use 1512 | [290]: http://dotat.at/prog/unifdef/ 1513 | [291]: https://tls.mbed.org/ 1514 | [292]: http://www.fefe.de/djb/ 1515 | [293]: http://jemalloc.net 1516 | [295]: https://github.com/gperftools/gperftools 1517 | [296]: http://www.throwtheswitch.org/unity 1518 | [297]: http://www.throwtheswitch.org/cmock 1519 | [298]: http://www.throwtheswitch.org/cexception 1520 | [299]: https://www.libtom.net 1521 | [300]: https://pngquant.org/lib/ 1522 | [301]: https://wiki.haskell.org/Introduction_to_QuickCheck2 1523 | [302]: https://github.com/silentbicycle/theft 1524 | [303]: http://chipmunk-physics.net 1525 | [304]: https://conan.io/ 1526 | [305]: https://faragon.github.io/libsrt.html 1527 | [306]: https://libusb.info/ 1528 | [307]: https://www.gnu.org/software/complexity/ 1529 | [308]: http://www.eso.org/sci/software/cpl/ 1530 | [309]: https://www.cprover.org/cbmc/ 1531 | [310]: https://github.com/0intro/libelf 1532 | [311]: https://github.com/matze/oclkit 1533 | [312]: http://tuxfan.github.io/ocl-mla/ 1534 | [313]: http://c2html.sourceforge.net/whatisc2html.html 1535 | [314]: http://astyle.sourceforge.net/ 1536 | [315]: https://www.gnu.org/software/indent/ 1537 | [316]: http://www.feynarts.de/cuba/ 1538 | [317]: http://www.gedanken.org.uk/software/cxref/ 1539 | [318]: http://www.doxygen.nl/ 1540 | [319]: https://github.com/google/cpu_features 1541 | [320]: https://www.gnu.org/software/ddd/ddd.html 1542 | [321]: http://docutils.sourceforge.net/ 1543 | [322]: https://hplgit.github.io/doconce/doc/web/index.html 1544 | [323]: http://fabutil.org/ 1545 | [324]: https://www.gnu.org/software/make/ 1546 | [325]: https://github.com/libfann/fann 1547 | [326]: https://github.com/centaurean/spookyhash 1548 | [327]: https://github.com/attractivechaos/kann 1549 | [328]: https://glade.gnome.org/ 1550 | [329]: https://cmake.org/ 1551 | [330]: https://www.gnu.org/software/global/ 1552 | [331]: https://gmsl.sourceforge.net/ 1553 | [332]: https://github.com/nfc-tools/libnfc 1554 | [333]: http://www.andre-simon.de/index.php 1555 | [334]: https://en.wikipedia.org/wiki/Levenshtein_distance 1556 | [335]: https://spdx.org/licenses/GPL-1.0.html 1557 | [336]: https://github.com/ndevilla/iniparser 1558 | [337]: https://github.com/jtsiomb/kdtree 1559 | [338]: http://www.oberhumer.com/opensource/lzo/ 1560 | [339]: http://www.nlnetlabs.nl/projects/ldns/index.html 1561 | [340]: https://wiki.gnome.org/Projects/LibRsvg 1562 | [341]: https://www.pyyaml.org/wiki/LibYAML 1563 | [342]: https://www.xiph.org/ao/ 1564 | [343]: https://www.chiark.greenend.org.uk/~sgtatham/mp/ 1565 | [344]: https://brechtsanders.github.io/xlsxio/ 1566 | [345]: https://github.com/jeremyevans/ape_tag_libs/tree/master/c 1567 | [346]: http://www.mission-base.com/peter/source/ 1568 | [347]: https://cdecl.org/ 1569 | [348]: https://mpv.io 1570 | [349]: https://www.recurse.com/blog/5-learning-c-with-gdb 1571 | [350]: https://github.com/P-p-H-d/mlib 1572 | [351]: https://www.gnu.org/software/gperf/ 1573 | [352]: http://libmill.org/ 1574 | [353]: https://talloc.samba.org/talloc/doc/html/index.html 1575 | [354]: https://github.com/libimobiledevice/libimobiledevice 1576 | [355]: http://kitsune-dsu.com/ 1577 | [356]: https://github.com/abiggerhammer/hammer 1578 | [357]: http://250bpm.com/blog:56 1579 | [358]: https://web.archive.org/web/20170429175803/http://www.samnip.ps/thought/macro-storage-for-inverse-comma 1580 | [359]: https://github.com/awslabs/s2n 1581 | [360]: https://github.com/wooorm/levenshtein.c 1582 | [361]: https://pp.ipd.kit.edu/firm/ 1583 | [362]: http://www.etalabs.net/compare_libcs.html 1584 | [363]: http://ed-von-schleck.github.io/shoco 1585 | [364]: https://github.com/antirez/smaz 1586 | [365]: https://github.com/prideout/heman 1587 | [366]: https://github.com/cacalabs/libcaca 1588 | [367]: http://tartarus.org/martin/PorterStemmer/ 1589 | [368]: https://mesonbuild.com/ 1590 | [369]: https://icculus.org/twilight/darkplaces/ 1591 | [370]: http://orx-project.org 1592 | [371]: https://github.com/AlexanderAgd/CLIST 1593 | [372]: http://libsound.io 1594 | [373]: http://libcox.symisc.net/ 1595 | [374]: https://proprogramming.org/some-unknown-features-or-tricks-in-c-language/ 1596 | [375]: https://perf.wiki.kernel.org/index.php/Main_Page 1597 | [376]: https://xiph.org/ao/ 1598 | [377]: https://github.com/camgunz/cmp 1599 | [378]: https://github.com/ludocode/mpack 1600 | [379]: https://msgpack.org/ 1601 | [380]: http://www.oracle.com/us/products/database/berkeley-db 1602 | [381]: https://spdx.org/licenses/AGPL-1.0.html 1603 | [382]: http://www.libpng.org/ 1604 | [383]: https://github.com/wooorm/stmr.c 1605 | [384]: http://cairographics.org/ 1606 | [385]: https://spdx.org/licenses/MPL-1.1.html 1607 | [386]: https://github.com/evolutional/utest 1608 | [387]: https://github.com/rgamble/libcsv 1609 | [388]: https://github.com/blynn/dlx 1610 | [389]: https://en.wikipedia.org/wiki/Knuth's_Algorithm_X 1611 | [390]: https://github.com/sharow/libconcurrent 1612 | [391]: https://hintjens.gitbooks.io/scalable-c/content/index.html 1613 | [392]: https://nemequ.github.io/munit 1614 | [393]: https://github.com/quixdb/squash 1615 | [394]: https://github.com/codeplea/minctest 1616 | [395]: https://github.com/codeplea/tinyexpr 1617 | [396]: https://github.com/nsf/termbox 1618 | [397]: http://opic.rocks/ 1619 | [398]: https://github.com/waruqi/tbox 1620 | [399]: http://sourceforge.net/projects/libquickmail/ 1621 | [400]: https://github.com/liteserver/binn 1622 | [401]: https://sourceforge.net/projects/giflib/ 1623 | [402]: https://github.com/libgd/libgd 1624 | [403]: https://embed.cs.utah.edu/creduce/ 1625 | [404]: http://www.gnu.org/software/cflow/ 1626 | [405]: https://github.com/hoedown/hoedown 1627 | [406]: https://github.com/srdja/Collections-C 1628 | [407]: https://github.com/Juniper/libxo 1629 | [408]: https://github.com/Immediate-Mode-UI/Nuklear 1630 | [409]: https://github.com/blunderer/libroxml 1631 | [410]: https://www.spinellis.gr/cscout/ 1632 | [411]: https://liblfds.org/ 1633 | [412]: https://codeplea.com/genann 1634 | [413]: https://github.com/cofyc/argparse 1635 | [414]: https://github.com/anholt/libepoxy 1636 | [415]: https://kore.io/ 1637 | [416]: http://zeromq.org/ 1638 | [417]: https://wiki.gnome.org/action/show/Projects/LibRsvg?action=show&redirect=LibRsvg 1639 | [418]: http://shop.oreilly.com/product/0636920033844.do 1640 | [419]: https://github.com/zeromq/zyre 1641 | [420]: https://github.com/zeromq/zproject 1642 | [421]: https://github.com/zeromq/zproto 1643 | [422]: https://github.com/it4e/CHL 1644 | [423]: http://www.koanlogic.com/klone/ 1645 | [425]: http://savannah.nongnu.org/projects/attr/ 1646 | [426]: https://sourceforge.net/projects/tinyfiledialogs/ 1647 | [427]: http://www.bzip.org/ 1648 | [428]: http://msys2.github.io/ 1649 | [429]: http://www.libsigil.com/ 1650 | [430]: https://www.freedesktop.org/wiki/Software/dbus/ 1651 | [431]: https://github.com/sheredom/json.h 1652 | [432]: http://lzip.nongnu.org/clzip.html 1653 | [433]: http://lzip.nongnu.org/lzip.html 1654 | [434]: https://github.com/openvenues/libpostal 1655 | [435]: https://premake.github.io/ 1656 | [436]: https://github.com/jgm/cmark 1657 | [437]: http://hardysimpson.github.io/zlog/ 1658 | [438]: http://www.pell.portland.or.us/~orc/Code/discount/ 1659 | [439]: https://github.com/clMathLibraries/clBLAS 1660 | [440]: https://criu.org/Main_Page 1661 | [441]: https://github.com/neomake/neomake 1662 | [442]: http://libdill.org/ 1663 | [443]: https://nullprogram.com/blog/2015/02/17 1664 | [444]: https://github.com/ands/lightmapper 1665 | [445]: http://blosc.org/pages/blosc-in-depth 1666 | [446]: https://github.com/Kazade/kazmath 1667 | [447]: http://pdclib.e43.eu/ 1668 | [448]: https://github.com/vurtun/mmx 1669 | [449]: https://tulipindicators.org/ 1670 | [450]: https://locklessinc.com/benchmarks_allocator.shtml 1671 | [451]: https://locklessinc.com/ 1672 | [452]: https://github.com/distcc/distcc 1673 | [453]: https://github.com/doches/progressbar 1674 | [454]: http://mpitutorial.com/ 1675 | [455]: http://libtrading.org/ 1676 | [456]: https://github.com/prideout/par 1677 | [457]: https://github.com/grimfang4/sdl-gpu 1678 | [458]: http://www.mega-nerd.com/libsndfile/ 1679 | [459]: https://github.com/parallella/pal 1680 | [460]: https://tatsuhiro-t.github.io/wslay/ 1681 | [461]: http://www.libtom.net/LibTomMath/ 1682 | [462]: http://www.libtom.net/TomsFastMath/ 1683 | [463]: http://www.libtom.net/LibTomPoly/ 1684 | [464]: https://github.com/LibVNC/libvncserver 1685 | [465]: https://github.com/yosefk/checkedthreads 1686 | [466]: https://ccache.dev/ 1687 | [467]: https://github.com/esneider/debug 1688 | [468]: https://lldb.llvm.org/ 1689 | [469]: https://github.com/JuliaLang/utf8proc 1690 | [470]: https://github.com/vmg/clar 1691 | [471]: https://github.com/powturbo/TurboPFor 1692 | [472]: https://github.com/sheredom/utf8.h 1693 | [473]: https://github.com/troydhanson/tpl 1694 | [474]: http://liburcu.org/ 1695 | [475]: http://oprofile.sourceforge.net/news/ 1696 | [476]: http://libcork.readthedocs.io/en/0.14.0/ 1697 | [477]: https://github.com/jppbsi/LibDEEP 1698 | [478]: https://github.com/xant/libhl 1699 | [479]: https://github.com/josephg/librope 1700 | [480]: https://github.com/miracl/MIRACL 1701 | [481]: https://github.com/RoaringBitmap/CRoaring 1702 | [482]: http://roaringbitmap.org/ 1703 | [483]: https://github.com/cvxgrp/scs 1704 | [484]: https://github.com/powturbo/TurboRLE 1705 | [485]: https://github.com/trezor/trezor-crypto 1706 | [486]: https://github.com/NuxiNL/cloudlibc 1707 | [487]: https://en.wikipedia.org/wiki/Capability-based_security 1708 | [488]: https://github.com/NeonMercury/jfes 1709 | [489]: https://github.com/inikep/lizard 1710 | [490]: https://nullprogram.com/blog/2017/03/30 1711 | [491]: https://github.com/westes/flex 1712 | [492]: https://www.gnu.org/software/bison/ 1713 | [493]: https://openquantumsafe.org/ 1714 | [494]: https://github.com/sabotage-linux/netbsd-curses 1715 | [495]: https://github.com/lemire/clhash 1716 | [496]: https://github.com/dmw/caffeine 1717 | [497]: https://github.com/fredrik-johansson/arb 1718 | [498]: https://github.com/theck01/offbrand_lib 1719 | [499]: https://github.com/simplegeo/libgeohash 1720 | [500]: https://github.com/smackers/smack 1721 | [501]: http://cppcheck.sourceforge.net/ 1722 | [502]: https://clang.llvm.org/docs/ClangCheck.html 1723 | [503]: https://github.com/bvdberg/ctest 1724 | [504]: https://github.com/antirez/linenoise 1725 | [505]: https://github.com/memononen/nanovg 1726 | [506]: https://github.com/centaurean/density 1727 | [507]: https://maciejczyzewski.github.io/retter 1728 | [508]: http://lz4.github.io/lz4/ 1729 | [509]: https://github.com/spotify/sparkey 1730 | [510]: http://facebook.github.io/zstd/ 1731 | [511]: https://libvips.github.io/libvips/ 1732 | [512]: https://github.com/priitj/whitedb 1733 | [513]: http://paulbatchelor.github.io/proj/soundpipe.html 1734 | [514]: https://github.com/atomicobject/heatshrink 1735 | [515]: http://ebassi.github.io/graphene/ 1736 | [516]: https://www.raylib.com 1737 | [517]: https://github.com/kkos/oniguruma 1738 | [518]: https://github.com/k-takata/Onigmo 1739 | [519]: https://github.com/lemire/simdcomp 1740 | [520]: https://github.com/kuba--/zip 1741 | [521]: https://www.scons.org/ 1742 | [522]: http://cyan4973.github.io/xxHash 1743 | [523]: https://github.com/aubio/aubio 1744 | [524]: https://github.com/groonga/groonga 1745 | [525]: https://100.github.io/Cranium/ 1746 | [526]: http://www.saphir2.com/sphlib/ 1747 | [527]: https://github.com/google/highwayhash 1748 | [528]: http://nullprogram.com/blog/2017/08/20/ 1749 | [529]: http://nullprogram.com/blog/2017/09/21/ 1750 | [530]: https://github.com/leo-yuriev/t1ha 1751 | [531]: http://www.gii.upv.es/tlsf/ 1752 | [532]: https://github.com/minad/tlsf 1753 | [533]: https://github.com/gildor2/fast_zlib 1754 | [534]: https://github.com/ferreiradaselva/mathc 1755 | [535]: https://github.com/ferreiradaselva/uastar 1756 | [536]: https://github.com/lieff/minimp3 1757 | [537]: https://github.com/adis300/fft-c 1758 | [538]: https://github.com/nbulischeck/list.h 1759 | [539]: https://github.com/shlomif/fc-solve 1760 | [540]: http://www.shlomifish.org/rwlock/ 1761 | [541]: https://github.com/recp/ds 1762 | [542]: https://github.com/recp/cglm 1763 | [543]: https://github.com/recp/tm 1764 | [544]: https://igraph.org/ 1765 | [546]: https://scientificc.github.io/cmathl/ 1766 | [547]: https://github.com/benhoyt/inih 1767 | [548]: https://github.com/libarchive/libarchive 1768 | [549]: https://github.com/LiamBindle/MQTT-C 1769 | [550]: https://github.com/LeoVen/C-Macro-Collections 1770 | [551]: https://github.com/mysql/mysql-server 1771 | [553]: https://github.com/okuvshynov/b63 1772 | [554]: https://github.com/rxi/dyad 1773 | [555]: https://github.com/eerimoq/pbtools 1774 | [556]: https://wiki.videolan.org/LibVLC 1775 | [557]: https://github.com/SanderMertens/flecs 1776 | [558]: https://github.com/librg/librg 1777 | [559]: https://github.com/superjer/tinyc.games 1778 | [560]: https://github.com/eerimoq/nala 1779 | [561]: http://jstimpfle.de/projects/rb3ptr/rb3ptr.html 1780 | [562]: https://kristaps.bsd.lv/kcgi 1781 | [563]: https://github.com/christophercrouzet/rexo 1782 | [564]: https://github.com/ithewei/libhv 1783 | [565]: https://github.com/sakhmatd/rogueutil 1784 | [566]: https://github.com/the-tcpdump-group/libpcap 1785 | [567]: http://esbmc.org/ 1786 | [568]: https://ejdb.org/ 1787 | [569]: https://github.com/recp/xml 1788 | [570]: https://github.com/recp/cmt 1789 | [571]: https://github.com/recp/AssetKit 1790 | [572]: https://github.com/shiyanhui/libcsp 1791 | [573]: https://github.com/PJK/libcbor 1792 | [574]: https://git.sr.ht/~mcf/cproc 1793 | [575]: https://lvgl.io/ 1794 | [576]: https://github.com/ianh/owl 1795 | [577]: https://github.com/zhaojh329/libuhttpd 1796 | [578]: http://zinjai.sourceforge.net/ 1797 | [579]: https://github.com/silgy/silgy 1798 | [580]: https://github.com/small-c/obj.h 1799 | [581]: https://github.com/zeromq/libzmq 1800 | [582]: https://www.infradead.org/~tgr/libnl/ 1801 | [583]: https://www.gnu.org/software/automake/manual/html_node/GNU-Build-System.html 1802 | [584]: https://github.com/msune/autotools-skeleton 1803 | [585]: https://msune.github.io/libcdada/ 1804 | [586]: https://github.com/ariya/fastlz 1805 | [587]: https://github.com/maxim2266/str 1806 | [588]: https://github.com/saprykin/plibsys 1807 | [589]: https://github.com/Jorengarenar/libXDGdirs 1808 | [590]: https://github.com/sammycage/plutovg 1809 | [591]: https://duktape.org/ 1810 | [592]: https://github.com/graphitemaster/incbin 1811 | [593]: https://libzip.org 1812 | [594]: https://github.com/tek256/astera 1813 | [595]: https://github.com/tezc/sc 1814 | [596]: https://github.com/damian-m-g/xlsx_drone 1815 | [597]: https://github.com/jart/cosmopolitan 1816 | [598]: https://github.com/cjwagenius/bfish 1817 | [599]: https://github.com/hnes/libaco 1818 | [600]: www.littlecms.com 1819 | [601]: https://github.com/smoked-herring/sail 1820 | [601]: https://sigrok.org/wiki/Libsigrok 1821 | [602]: https://github.com/zpl-c/zpl 1822 | [603]: https://github.com/Hirrolot/metalang99 1823 | [604]: https://github.com/Hirrolot/datatype99 1824 | [605]: https://codeforwin.org/2015/09/singly-linked-list-data-structure-in-c.html 1825 | [606]: https://www.learn-c.org 1826 | [607]: https://github.com/metacall/core 1827 | [608]: https://hirrolot.github.io/posts/compiling-algebraic-data-types-in-pure-c99.html 1828 | [609]: https://github.com/jasmcaus/tau 1829 | [610]: https://github.com/BayesWitnesses/m2cgen 1830 | [611]: https://sod.pixlab.io/ 1831 | [612]: https://github.com/michaelrsweet/pdfio 1832 | [613]: https://github.com/rurban/ctl 1833 | [614]: https://github.com/nakst/luigi 1834 | [615]: https://github.com/helderman/htpataic 1835 | [616]: https://github.com/rxi/microui 1836 | [617]: https://github.com/Cogmasters/concord 1837 | [618]: https://github.com/solenum/exengine 1838 | [619]: https://projects.malikania.fr/bcc 1839 | [620]: https://github.com/pspdev/pspsdk 1840 | [621]: https://github.com/pspdev/pspsdk/blob/master/LICENSE 1841 | [622]: https://remove-to-waste.info 1842 | [623]: https://github.com/ashvardanian/StringZilla 1843 | [700]: https://viewsourcecode.org/snaptoken/kilo/ 1844 | [701]: https://wiki.gnome.org/Projects/GLib 1845 | [702]: https://duckdb.org/ 1846 | [703]: https://github.com/armink/FlashDB 1847 | [704]: https://github.com/taosdata/TDengine 1848 | [705]: https://nappgui.com/ 1849 | [706]: https://github.com/armink/EasyLogger 1850 | 1851 | --------------------------------------------------------------------------------