{"id":34257506,"url":"https://github.com/raffaellod/lofty","last_synced_at":"2026-03-12T02:02:04.882Z","repository":{"id":25410366,"uuid":"28839373","full_name":"raffaellod/lofty","owner":"raffaellod","description":"Coroutines, stack traces and smart I/O for C++11, inspired by Python and Golang.","archived":false,"fork":false,"pushed_at":"2018-07-29T02:38:25.000Z","size":6045,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-20T02:26:23.841Z","etag":null,"topics":["asyncio","c-plus-plus","coroutine-framework","coroutines","stack-traces"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raffaellod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-06T00:43:14.000Z","updated_at":"2025-01-27T07:51:47.000Z","dependencies_parsed_at":"2022-08-26T02:51:34.520Z","dependency_job_id":null,"html_url":"https://github.com/raffaellod/lofty","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/raffaellod/lofty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raffaellod%2Flofty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raffaellod%2Flofty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raffaellod%2Flofty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raffaellod%2Flofty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raffaellod","download_url":"https://codeload.github.com/raffaellod/lofty/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raffaellod%2Flofty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30412241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T00:40:14.898Z","status":"online","status_checked_at":"2026-03-12T02:00:07.260Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["asyncio","c-plus-plus","coroutine-framework","coroutines","stack-traces"],"created_at":"2025-12-16T14:37:57.130Z","updated_at":"2026-03-12T02:02:04.873Z","avatar_url":"https://github.com/raffaellod.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿**Lofty** – coroutines, stack traces and smart I/O for C++11, inspired by Python and Golang. \n\n## 1. Introduction\n\nLofty is a C++11 framework featuring:\n\n*  Multiple platform compatibility: Linux and Windows, partial with macOS and FreeBSD (see §\n   _5. Compatibility_);\n\n*  Built on top of the C++11 STL;\n\n*  Coroutines and threads as easy as declaring a function, with a rich suite of I/O classes to enable truly\n   asynchronous code;\n\n*  Crash-free execution: every error condition (including dereferencing a null pointer) results in an\n   exception, with support for integrated stack tracing (see `LOFTY_TRACE_FUNC()`);\n\n*  An I/O class hierarchy that leaves the STL behind, making working with files and sockets a breeze – say\n   goodbye to vulnerable `printf()` and clunky `cout`;\n\n*  Testing framework integrated in the library, fully supported by the recommended build tool,\n   [Complemake](https://github.com/raffaellod/complemake);\n\n*  Full support for Unicode and the C++11 `char32_t` character type (see `lofty::text`).\n\n\n## 2. Getting Lofty\n\nLofty is [available on GitHub](https://github.com/raffaellod/lofty); to download it, just clone the\nrepository:\n\n```\ngit clone https://github.com/raffaellod/lofty.git\ncd lofty\n```\n\nSee § _4. Versioning and branching_ for more information on available branches.\n\n\n### 2.1. Building\n\n#### Complemake\n\nBuilding Lofty is easiest with [Complemake](https://github.com/raffaellod/complemake), which works as an improved\nmake utility and dependency manager.\n\nTo build Lofty, run Complemake from Lofty’s repo clone:\n\n```\ncomplemake build\n```\n\nThis will create outputs in the `bin` and `lib` folders (you can change that with Complemake’s flags).\n\n#### Conan and CMake\n\nAlternatively, Lofty can also be built as a [Conan](https://www.conan.io/) package\nwith [CMake](https://cmake.org/).\n\nWith Conan and CMake installed, build Lofty by running the following commands from Lofty’s repo clone:\n```\nconan install .\nconan build .\n```\n\nThis will create outputs in the `bin` and `lib` folders.\n\n\n### 2.2. Installing\n\nAt the moment, Lofty lacks any means for installation.\nIf you’re using Complemake to build your project, Complemake will take care of making Lofty available during\nbuilds to projects that declare it as a dependency, and the `exec` Complemake command will allow running any\ngenerated executables; see § _3. Using Lofty_.\n\n**TODO**: make Lofty installable.\n\n\n## 3. Using Lofty\n\nFor usage examples, please see the source files in the `examples` folder. Examples are built as part of Lofty\n(see § _2.1. Building Lofty_), and the generated executables can be found in the `bin` output folder.\n\nIf Lofty is not installed (see § _2.2. Installing Lofty_), programs will fail to run due to being unable to\nload Lofty shared libraries; this can be worked around by using the `exec` command of Complemake:\n\n```\ncomplemake exec bin/hello-world\n```\n\n\n## 4. Versioning and branching\n\nLofty uses semantic versioning: _MAJOR.MINOR.REVISION_ .\n\nWhile the major version number is 0, changes to the minor indicate breaking changes, while the revision is\nincremented for non-breaking changes such as bug fixes and minor improvements.\n\nVersion 1.0.0 will indicate the first production-grade release, and the meaning of the versioning schema will\nshift accordingly: the major number will indicate breaking changes, the minor non-breaking changes (e.g. for\nmaintenance releases), and the revision will be incremented for bug fixes and other minor improvements.\n\nRevisions are tags named `vX.Y.Z` where _X_ is the major version, _Y_ is the minor version, and _Z_ is the\nrevision.\n\nVersions are branches named `vX.Y` where _X_ is the major version and _Y_ is the minor version. Version\nbranches start with a revision tag, and may have more revision tags for maintenance releases.\n\nCurrently there are no version branches, as long as the major version remains 0.\n\nThe default branch is `master`; this branch tracks the most common ancestor of all development branches, which\nare one for each platform:\n\n*  Linux:   `linux`\n*  Windows: `win`\n*  macOS:   `macos`\n*  FreeBSD: `freebsd`\n\nWhen Lofty will have version branches, each version branch should proably get a development branch of its own\nin the form of `platform_vX.Y`, with the version branch `vX.Y` being a tracker in the same way `master` tracks\nthe main development branches.\n\n\n## 5. Compatibility\n\nLofty is in full development, so its compatibility can and will change over time (hopefully expanding).\n\nSupported build systems:\n\n*  GNU toolchain\n   *  GCC 4.7 to 5.2\n   *  binutils 2.20 or later\n\n*  Microsoft Visual Studio 2010-2013 (Visual C++ 10-12 / MSC 16-18)\n\nClang/LLVM is not fully supported at this moment due to missing compiler features. If and when these will get\nintegrated in LLVM, Lofty will support these additional build systems:\n\n*  Clang + GNU LD\n   *  Clang 3.5\n   *  binutils 2.20 or later\n\n*  Apple SDK for macOS (included in Xcode)\n\nSupported operating systems:\n\n*  GNU/Linux 2.6 or later, using glibc 2.17 or later;\n*  Microsoft Windows – currently via Visual C++ 10 or later, which means Windows XP and later versions are\n   supported.\n\nThese operating systems are supported at the source code level, but binaries built for them are fundmentally\nflawed due to the above-mentioned LLVM limitations:\n\n*  macOS 10.9 Mavericks or later;\n*  FreeBSD – officially only the latest -RELEASE is supported.\n\nAdditionally, Lofty requires Python 2.7 or 3.2 or later to be installed on the build host system.\n\n\n## 6. Past, present and future\n\n\n### 6.1. Some history\n\nLofty was started in the mid-2000s with a dual scope: on one hand explore if it was possible, (ab)using\ntemplates and other C++ features, to have automatic error reporting similar to what higher-level languages\nsuch as Python and Java offer; on the other hand, a required target was to be able to write programs that\nwould be light, fast, easy to write, and easy to read years later.\n\nAt the time, the features of C++ were insufficient to accomplish all that without using some sort of\npre-preprocessor, so the project goals lead to several dead-ended projects.\n\nWhen C++11 finally reached the final draft status, it turned out that it allowed for most of the features that\nhad originally been planned, so development of Lofty as it is now was finally started.\n\n\n### 6.2. Current status of Lofty\n\nLofty can be considered of “alpha” grade, and tinkering with it is strongly encouraged.\n\n\n### 6.3. Project goals\n\nLofty has very ambitious goals (hence its name):\n\n1. Supersede other C++ libraries that fail to exploit the features of C++11 – especially libraries developed\n   as C++ bindings for C libraries;\n\n2. Demonstrate that C++ programs can be as sleek as Java or Python programs, while being considerably more\n   efficient;\n\n3. Encourage writing of software in C++ instead of other less efficient languages such as C (development\n   efficiency) or Java (execution efficiency).\n\nAll future development will be geared towards getting closer to accomplishing these objectives.\n\n\n\n\n--------------------------------------------------------------------------------------------------------------\nCopyright 2010-2018 Raffaello D. Di Napoli\n\nThis file is part of Lofty.\n\nLofty is free software: you can redistribute it and/or modify it under the terms of version 2.1 of the GNU\nLesser General Public License as published by the Free Software Foundation.\n\nLofty is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied\nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for\nmore details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraffaellod%2Flofty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraffaellod%2Flofty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraffaellod%2Flofty/lists"}