{"id":22472608,"url":"https://github.com/jcarrano/fv-libc","last_synced_at":"2025-07-01T16:07:57.199Z","repository":{"id":69249492,"uuid":"183826496","full_name":"jcarrano/fv-libc","owner":"jcarrano","description":"Towards a formally verified, tiny and permissively licensed C standard library, using Frama-C (fork of Baselibc/Klibc)","archived":false,"fork":false,"pushed_at":"2019-06-17T06:45:44.000Z","size":87,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T01:51:22.847Z","etag":null,"topics":["acsl","c","embedded","formal-verification","frama-c","libc","microcontroller","standard-library"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jcarrano.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-27T22:15:33.000Z","updated_at":"2024-02-10T19:43:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"bd8f225a-4325-4f7e-9f7c-bb35ac65e1e1","html_url":"https://github.com/jcarrano/fv-libc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jcarrano/fv-libc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcarrano%2Ffv-libc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcarrano%2Ffv-libc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcarrano%2Ffv-libc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcarrano%2Ffv-libc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcarrano","download_url":"https://codeload.github.com/jcarrano/fv-libc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcarrano%2Ffv-libc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262996403,"owners_count":23396903,"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":["acsl","c","embedded","formal-verification","frama-c","libc","microcontroller","standard-library"],"created_at":"2024-12-06T12:16:32.793Z","updated_at":"2025-07-01T16:07:57.193Z","avatar_url":"https://github.com/jcarrano.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"FV-Libc\n=======\n\nThis is an attempt at a formally-verified variant of klibc/baselibc.\n\nIt is directly derived from Baselibc, which is a fork of klibc with GPL code\nremoved and tinyprintf.\n\nVerification is being carried out using Frama-C/WP and ACSL. See\nhttps://frama-c.com/index.html for more information.\n\n\n# Targets\n\nJust like Baselibc, this library targets small microcontrollers and deeply\nembedded systems. Therefore it is _not_ an objective to support POSIX system\ncalls.\n\n# Goals\n\n- Have all non I/O functions fully verified.\n- For functions that require I/O (and thus some board support or os support)\n  have at least the specification for functions that should be provided.\n- Have something that is usable as a stand-alone C library (i.e., no need for\n  newlib or any of that stuff.)\n- Keep the original C code as is: the way klibc is written makes it harder to\n  verify, but that's the challenge.\n- Be independent of other C libraries' headers (using the compiler provided\n  headers is OK). This includes Frama-C headers too.\n\n# Non goals\n\nThings I will _not_ do:\n\n- Support non C99 functions: this means no POSIX and no non-standard stuff.\n- Architecture or OS-specific code if not _strictly_ needed: this means NO board\n  support packages.\n\n# Usage / Building\n\n## Requirements\n\nIn addition to a compiler, you need Frama-C / Alt-Ergo. The easiest way to get\nit is via [OPAM](https://opam.ocaml.org/).\n\n## Building\n\nTyping `make` or `make all` will verify all currently proven files and build\nthe library, producing a static archive.\n\n`make library` only compiles, while `make proofs` only runs Frama-C/WP without\ncompiling.\n\n# TODO\n\n- Finish verifying all of string.h.\n- Weed out POSIX and BSD functions.\n- Add proper Makefiles to run th verification/compile, etc.\n- Figure out what's needed to cut dependencies on other C libraries in bare\n  metal projects.\n- More stuff.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcarrano%2Ffv-libc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcarrano%2Ffv-libc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcarrano%2Ffv-libc/lists"}