{"id":16825843,"url":"https://github.com/trflynn89/libfly","last_synced_at":"2025-04-11T03:35:01.899Z","repository":{"id":13565175,"uuid":"64513158","full_name":"trflynn89/libfly","owner":"trflynn89","description":"C++ utility library","archived":false,"fork":false,"pushed_at":"2022-08-16T19:51:01.000Z","size":32082,"stargazers_count":16,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-25T01:36:34.494Z","etag":null,"topics":["c-plus-plus","c-plus-plus-20","c-plus-plus-library","cpp","cpp-library","cpp20","cross-platform","utility-library"],"latest_commit_sha":null,"homepage":"https://trflynn89.github.io/libfly/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trflynn89.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-29T22:08:52.000Z","updated_at":"2024-07-25T23:43:58.000Z","dependencies_parsed_at":"2022-07-12T12:14:11.848Z","dependency_job_id":null,"html_url":"https://github.com/trflynn89/libfly","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trflynn89%2Flibfly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trflynn89%2Flibfly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trflynn89%2Flibfly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trflynn89%2Flibfly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trflynn89","download_url":"https://codeload.github.com/trflynn89/libfly/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248337178,"owners_count":21086966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","c-plus-plus-20","c-plus-plus-library","cpp","cpp-library","cpp20","cross-platform","utility-library"],"created_at":"2024-10-13T11:15:21.817Z","updated_at":"2025-04-11T03:35:01.879Z","avatar_url":"https://github.com/trflynn89.png","language":"C++","readme":"# libfly\n\n[![Azure DevOps](https://img.shields.io/azure-devops/build/trflynn89/eb3b4226-f8b0-4c71-ae96-3f03b0def035/5/main?style=for-the-badge)](https://dev.azure.com/trflynn89/libfly/_build?definitionId=5)\n[![Codecov](https://img.shields.io/codecov/c/github/trflynn89/libfly?style=for-the-badge)](https://codecov.io/gh/trflynn89/libfly)\n[![Codacy](https://img.shields.io/codacy/grade/9de3533a8aef4358895a018f91e90bd4/main?style=for-the-badge)](https://app.codacy.com/gh/trflynn89/libfly/dashboard)\n\nlibfly is a C++20 utility library for Linux, macOS, and Windows. It primarily serves as a playground\nfor learning new C++ standards and exploring interests.\n\n## Features\n\n* A [string library](fly/types/string/string.hpp) for all `std::basic_string` specializations,\n  including:\n    * A compile-time-validated string formatter based on `std::format`\n    * A type-safe lexical type converter\n    * UTF-8, UTF-16, and UTF-32 support\n* A [JSON type](fly/types/json/json.hpp) as a first-class container\n    * Designed to feel like a Python dictionary\n* [Instrumentation and logging](fly/logger/logger.hpp)\n    * Provides synchronous and asynchronous loggers\n    * Supports logging to the console ([with color](fly/logger/styler.hpp)), a file, or any\n      user-defined sink\n* Networking\n    * [TCP](fly/net/socket/tcp_socket.hpp) and [UDP](fly/net/socket/udp_socket.hpp) sockets with\n      [IPv4](fly/net/ipv4_address.hpp) and [IPv6](fly/net/ipv6_address.hpp) support\n    * An [asynchronous socket](fly/net/socket/socket_service.hpp) IO service\n* Coders\n    * Base64 [encoder and decoder](fly/coders/base64/base64_coder.hpp)\n    * Huffman [encoder](fly/coders/huffman/huffman_encoder.hpp) and [decoder](fly/coders/huffman/huffman_decoder.hpp)\n        * Includes a [bitwise IO stream](fly/types/bit_stream/detail/bit_stream.hpp) for reading\n          and writing content bit-by-bit\n* [Path change monitoring](fly/path/path_monitor.hpp)\n    * Monitors any number of files or directories for creation, deletion, or change\n* [Configuration management](fly/config/config_manager.hpp)\n    * Built around the path monitor to detect changes to a configuration file and automatically\n      update configuration objects\n* [Task system](fly/task/task_runner.hpp) for policy-based asynchronous execution of tasks\n* [INI](fly/parser/ini_parser.hpp) and [JSON](fly/parser/json_parser.hpp) file parsers\n* [System resource monitor](fly/system/system_monitor.hpp)\n* Thread-safe [queue](fly/types/concurrency/concurrent_queue.hpp) and [stack](fly/types/concurrency/concurrent_stack.hpp)\n* [Concepts](fly/concepts/concepts.hpp) to extend the STL's `\u003cconcepts\u003e`\n* Type-safe, fixed-width [integer literal suffixes](fly/types/numeric/literals.hpp)\n\n## Building\n\nAfter cloning libfly, [external dependencies](extern) should be fetched as well.\n\n```bash\ngit submodule update --init\n```\n\nOf those dependencies, only [flymake](https://github.com/trflynn89/flymake) is required (on Linux\nand macOS) to compile the libfly library. [Catch2](https://github.com/catchorg/Catch2) is required\nonly for building unit tests. All other dependencies are for benchmarking purposes, and not used by\nlibfly itself.\n\n### Linux and macOS\n\nOn Linux and macOS, libfly is compiled using the [flymake](https://github.com/trflynn89/flymake)\nbuild system, which is a GNU Makefile system. To build all libfly targets with the default\nconfiguration, just run `make`.\n\nThe following individual Make targets are defined:\n\n* `libfly` - Compiles the libfly library to static and shared library files.\n* `libfly_unit_tests` - Compiles libfly unit tests.\n* `libfly_benchmarks` - Compiles libfly performance benchmarks.\n\nSee the flymake README for [other make goals](https://github.com/trflynn89/flymake/blob/main/README.md#make-goals)\nand [build configurations](https://github.com/trflynn89/flymake/blob/main/README.md#build-configuration).\n\n### Windows\n\nOn Windows, libfly is compiled with Visual Studio. A [solution file](libfly.sln) is provided with\nthe following projects:\n\n* [libfly](build/win/libfly/libfly.vcxproj) - Compiles libfly library to static library files.\n* [libfly_unit_tests](build/win/libfly_unit_tests/libfly_unit_tests.vcxproj) - Compiles libfly unit\n  tests.\n* [libfly_benchmarks](build/win/libfly_benchmarks/libfly_benchmarks.vcxproj) - Compiles libfly\n  performance benchmarks.\n\n## Directory structure\n\n* [fly](fly) - Contains the primary source and header files for libfly.\n* [build](build) - Contains build output, platform-specific build files, and the CI configuration.\n* [test](test) - Contains the libfly unit tests.\n* [docs](docs) - Contains generated source code documentation.\n* [bench](bench) - Contains performance benchmarks of various libfly components.\n* [extern](extern) - Contains all third-party projects used by libfly.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrflynn89%2Flibfly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrflynn89%2Flibfly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrflynn89%2Flibfly/lists"}