{"id":15048926,"url":"https://github.com/fstarlang/karamel","last_synced_at":"2025-05-15T15:05:10.198Z","repository":{"id":39580272,"uuid":"59868307","full_name":"FStarLang/karamel","owner":"FStarLang","description":"KaRaMeL is a tool for extracting low-level F* programs to readable C code","archived":false,"fork":false,"pushed_at":"2025-04-04T21:20:11.000Z","size":12739,"stargazers_count":428,"open_issues_count":47,"forks_count":65,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-07T21:08:53.326Z","etag":null,"topics":["c-language","cryptography","f-star","proofs","verification"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FStarLang.png","metadata":{"files":{"readme":"README.md","changelog":"Changes.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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":"2016-05-27T23:29:05.000Z","updated_at":"2025-04-05T03:08:03.000Z","dependencies_parsed_at":"2024-06-03T04:55:50.091Z","dependency_job_id":"37de4923-9aa4-40e3-bddd-2aff13c55b2d","html_url":"https://github.com/FStarLang/karamel","commit_stats":{"total_commits":3209,"total_committers":53,"mean_commits":60.54716981132076,"dds":0.4858211280772826,"last_synced_commit":"c31a22c1e07d2118c07ee5cebb640d863e31a198"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FStarLang%2Fkaramel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FStarLang%2Fkaramel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FStarLang%2Fkaramel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FStarLang%2Fkaramel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FStarLang","download_url":"https://codeload.github.com/FStarLang/karamel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247730068,"owners_count":20986404,"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-language","cryptography","f-star","proofs","verification"],"created_at":"2024-09-24T21:17:11.642Z","updated_at":"2025-04-07T21:09:09.236Z","avatar_url":"https://github.com/FStarLang.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"KaRaMeL\n-------\n\n| Linux  |\n|---------|\n| [![Build and Deploy](https://github.com/FStarLang/karamel/actions/workflows/linux-x64-hierarchic.yaml/badge.svg)](https://github.com/FStarLang/karamel/actions/workflows/linux-x64-hierarchic.yaml) |\n\nKaRaMeL (formerly known as KReMLin) is a tool that extracts an F\\* program to\nreadable C code: K\u0026R meets ML!\n\nIf the F\\* program verifies against a low-level memory model that talks about\nthe stack and the heap; if it is first-order; if it obeys certain restrictions\n(e.g. non-recursive data types) then KaRaMeL will turn it into C.\n\nThe best way to learn about KaRaMeL is its work-in-progress\n[tutorial](https://fstarlang.github.io/lowstar/html/). Pull requests and\nfeedback are welcome!\n\n- [DESIGN.md](DESIGN.md) has a technical overview of the different\n  transformation passes performed by KaRaMeL, and is slightly out of date.\n\nThis work has been formalized on paper. We state that the compilation of\nsuch F\\* programs to C preserves semantics. We start from Low\\*, a subset of\nF\\*, and relate its semantics to [CompCert](http://compcert.inria.fr/)'s Clight.\n- the [ICFP 2017 Paper] provides an overview of KaRaMeL as well\n  as a paper formalization of our compilation toolchain\n\nWe have written 120,000 lines of Low\\* code, implementing the [TLS\n1.3](https://tlswg.github.io/tls13-spec/) record layer. As such, KaRaMeL is a\nkey component of [Project Everest](https://project-everest.github.io/).\n- [HACL\\*], our High Assurance Crypto Library, provides numerous cryptographic\n  primitives written in F\\*; these primitives enjoy memory safety, functional\n  correctness, and some degree of side-channel resistance -- they extract to C\n  via KaRaMeL.\n\n[ML Workshop Paper]: https://jonathan.protzenko.fr/papers/ml16.pdf\n[HACL\\*]: https://github.com/hacl-star/hacl-star\n[ICFP 2017 Paper]: https://arxiv.org/abs/1703.00053\n\n## Trying out KaRaMeL\n\nKaRaMeL requires OCaml (\u003e= 4.10.0), OPAM, and a recent version of GNU make.\n\n**Regarding GNU make:** On OSX, this may require you to install a recent GNU\nmake via homebrew, and invoke `gmake` instead of `make`.\n\n**Regarding OCaml:** Install OPAM via your package manager, then:\n\n`$ opam install ppx_deriving_yojson zarith pprint \"menhir\u003e=20161115\" sedlex process fix \"wasm\u003e=2.0.0\" visitors ctypes-foreign ctypes uucp`\n\nNext, make sure you have an up-to-date F\\*, either as a binary package\nor that you have built it by running `make`. The `fstar.exe` executable\nshould be on your PATH, or you may set the variable `FSTAR_EXE` to its\nlocation.\n\nTo build just run `make` from this directory.\n\n**Note:** on OSX, KaRaMeL is happier if you have `greadlink` installed (`brew\ninstall coreutils`).\n\nIf you have the right version of F\\* and `fstar.exe` is in your `PATH` then you\ncan run the KaRaMeL test suite by doing `make test`.\n\n## Installing through OPAM\n\nKaRaMeL is also available on OPAM, by running `opam install karamel`.\n\nIf you installed the latest version of F\\* through OPAM, using `opam pin add fstar --dev-repo`,\nyou can also install the most up-to-date version of KaRaMeL by running `opam pin add karamel --dev-repo`.\n\nFile a bug if things don't work!\n\n## Documentation\n\nThe `--help` flag contains a substantial amount of information.\n\n```\n$ ./krml --help\n```\n\n## License\n\nKaRaMeL is released under the [Apache 2.0 license] and MIT license; see `LICENSE-*` for more details.\n\n[Apache 2.0 license]: https://www.apache.org/licenses/LICENSE-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffstarlang%2Fkaramel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffstarlang%2Fkaramel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffstarlang%2Fkaramel/lists"}