{"id":18421950,"url":"https://github.com/spcl/cppless","last_synced_at":"2026-04-01T18:25:05.099Z","repository":{"id":117357266,"uuid":"465252324","full_name":"spcl/cppless","owner":"spcl","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-06T23:32:07.000Z","size":352,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-28T00:37:13.250Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spcl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-02T10:09:57.000Z","updated_at":"2026-02-14T07:05:27.000Z","dependencies_parsed_at":"2024-11-06T04:29:20.222Z","dependency_job_id":"d0369d77-e0b0-47ee-a769-2810e0f5f58d","html_url":"https://github.com/spcl/cppless","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/spcl/cppless","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fcppless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fcppless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fcppless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fcppless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spcl","download_url":"https://codeload.github.com/spcl/cppless/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spcl%2Fcppless/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-11-06T04:27:24.866Z","updated_at":"2026-04-01T18:25:05.042Z","avatar_url":"https://github.com/spcl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cppless\n\nCppless is a single-source programming model for high-performance serverless. It enables you to write applications that offload work to serverless services, without the need to write the glue code needed to connect them.\n\nThe architecture of the compiler, including benchmark evaluation, details can be found in the thesis [Cppless: A single-source programming model for high-performance serverless](https://mcopik.github.io/assets/pdf/students/2022_cppless_moeller.pdf).\n\nWhen using Cppless, please cite our ACM TACO paper (to appear). An extended version of our paper is available on [arXiv](https://arxiv.org/abs/2401.10834).\n\n```\n@article{cppless2025,\n  author = {Copik, Marcin and M\\\"{o}ller, Lukas and Calotoiu, Alexandru and Hoefler, Torsten},\n  title = {Cppless: Single-Source and High-Performance Serverless Programming in C++},\n  year = {2025},\n  issue_date = {September 2025},\n  publisher = {Association for Computing Machinery},\n  address = {New York, NY, USA},\n  volume = {22},\n  number = {3},\n  issn = {1544-3566},\n  url = {https://doi.org/10.1145/3747841},\n  doi = {10.1145/3747841},\n  journal = {ACM Trans. Archit. Code Optim.},\n  month = sep,\n  articleno = {110},\n  numpages = {27},\n}\n```\n\n## Building and installing\n\nBuilding applications that use cppless requires using a custom fork of the clang compiler. The modified version of the llvm-project is included as a submodule in the repository, it can be built by following these steps:\n- fetch the submodule\n  - `git submodule update --init --recursive` (this will fetch only the latest revision, but will sped up the download)\n  - Shallow clones cannot be used for contributing, you'll need to unshallow the clone in order to be able to commit changes to the submodule.\n- run `mkdir build \u0026\u0026 cd build` in the root of the repository (`llvm-project` doesn't support in-tree builds)\n- run `cmake -DLLVM_ENABLE_PROJECTS=\"clang\" -DCMAKE_BUILD_TYPE=Release -G \"Unix Makefiles\" ../llvm`\n  - This will build the modified `clang` compiler in a release configuration\n- run `make clang` (or `make clang -j \u003cconcurrency\u003e` if you want multiple tasks to run in parallel)\n- this should produce a `clang` (and `clang++`) executable in the `build/bin` directory\n\nThe cmake configuration of this project will automatically use the `clang` executable from the `build/bin` directory, if you want to use cppless in your own project you'll have to instruct your build tool to use that version of clang accordingly\n\nSee the [BUILDING](BUILDING.md) document.\n\n### ARM Cross-compilation\n\nTo deploy ARM functions from an x86 system, check the documentation on setting up sysroot and toolchain in `cmake/toolchains/aarch64`.\n\n### Compatibility issues with stdlibc++\n\nThe Clang's verison, on which Cppless is based, should work with the gcc-based libstdc++ toolchain until version 11.\nIf your OS has a new version, you need tell CMake to use a different toolchain to avoid potential incompatibilities.\n\nEasiest way to do this:\n\n```\nmkdir -p toolchain/lib/gcc/x86_64-linux-gnu\ncd toolchain/lib/gcc/x86_64-linux-gnu\nln -sfn /usr/lib/gcc/x86_64-linux-gnu/11 .\n```\n\nAnd in CMakeLists.txt add the following line:\n\n```cmake\nset(CMAKE_CXX_FLAGS \"--gcc-toolchain=/absolute/path/to/toolchain_root ${CMAKE_CXX_FLAGS}\")\n```\n\n## Benchmarks\n\nImplementations:\n- Fib\n- Floorplan\n- Knapsack\n- NQueens\n- Raycasting\n\n# Contributing\n\nSee the [CONTRIBUTING](CONTRIBUTING.md) document.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspcl%2Fcppless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspcl%2Fcppless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspcl%2Fcppless/lists"}