{"adoption": {"forks": 64, "observed_at": "2026-08-28T04:03:39.109551+00:00", "stars": 1118}, "canonical_url": "https://ross.abutalabs.com/products/hardcaml", "card": {"archived": false, "artifact_type": "library", "description": "Hardcaml is an OCaml library for designing hardware.", "domain": ["hardware", "embedded-systems", "programming-languages", "developer-tools"], "enriched": true, "function": ["simulation", "compiler", "testing", "developer-tools"], "health_score": 75, "homepage": null, "language": "OCaml", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["janestreet/hardcaml"], "name": "janestreet/hardcaml", "platform": ["windows", "cross-platform"], "pushed_at": "2026-07-10T16:45:36+00:00", "repo": "janestreet/hardcaml", "stars": 1118, "tags": ["hardware-description-language", "rtl", "fpga", "verilog", "vhdl", "ocaml", "circuit-design", "digital-design", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["design hardware circuits in OCaml instead of Verilog or VHDL", "simulate digital hardware designs with waveform visualization", "generate parameterized RTL pipelines using higher-order functions and functors", "compile hardware designs to Verilog or VHDL for FPGA synthesis", "write custom backends or circuit analysis tools", "avoid type-confusion bugs in hardware signal wiring"], "what_it_is": "Hardcaml is an OCaml library for designing and testing hardware circuits, letting users express hardware designs using OCaml's type system and metaprogramming features. It includes a simulation backend and can compile designs to hierarchical Verilog or VHDL for FPGA synthesis.", "when_to_avoid": ["you need an industry-standard HDL workflow with existing Verilog/VHDL tooling and IP", "your team has no OCaml experience", "you need analog or mixed-signal design capabilities", "you require vendor-specific synthesis features not covered by RTL export"], "when_to_choose": ["you want to use a strongly typed functional language for hardware design", "you need to generate large unrolled or pipelined hardware designs programmatically", "you want to simulate and validate hardware entirely within OCaml", "you value code reuse and parametrization across hardware projects"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hardcaml", "repo": "janestreet/hardcaml", "role": "main", "score": 64}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.109551+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:41:48.477149+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a41ded7e0286e2329d3854e34bf47cf6c7d889ec00b1fb723b073ab31d5856b2", "fetched_at": "2026-08-28T04:03:39.109551+00:00", "kind": "readme", "missing": false, "url": "https://github.com/janestreet/hardcaml"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 91, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3024, "days_push": 54, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 64, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}