{"id":13747725,"url":"https://github.com/eholk/harlan","last_synced_at":"2026-02-16T17:36:37.066Z","repository":{"id":66241571,"uuid":"3257212","full_name":"eholk/harlan","owner":"eholk","description":"A language for GPU computing.","archived":false,"fork":false,"pushed_at":"2015-11-04T15:50:49.000Z","size":6405,"stargazers_count":1191,"open_issues_count":68,"forks_count":81,"subscribers_count":119,"default_branch":"master","last_synced_at":"2025-12-22T21:48:59.511Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Scheme","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/eholk.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":"2012-01-24T16:07:50.000Z","updated_at":"2025-09-17T03:57:59.000Z","dependencies_parsed_at":"2023-02-20T16:32:02.592Z","dependency_job_id":null,"html_url":"https://github.com/eholk/harlan","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eholk/harlan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eholk%2Fharlan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eholk%2Fharlan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eholk%2Fharlan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eholk%2Fharlan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eholk","download_url":"https://codeload.github.com/eholk/harlan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eholk%2Fharlan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29514023,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"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-08-03T06:01:39.736Z","updated_at":"2026-02-16T17:36:37.048Z","avatar_url":"https://github.com/eholk.png","language":"Scheme","funding_links":[],"categories":["Scheme","Languages and Computation","Uncategorized"],"sub_categories":["Implemented in Python","Uncategorized","course"],"readme":"Harlan [![Build Status](https://travis-ci.org/eholk/harlan.svg?branch=master)](https://travis-ci.org/eholk/harlan)\n==========\n\nHarlan is a domain specific language for programming GPUs. This\nproject serves primarily as a testbed for implementation and\noptimization techniques. The language is intentionally small, in order\nto simplify the process of exploring new analyses and optimizations.\n\nGetting Started\n----------\n\nHarlan is known to build and run on the following operating systems.\n* Mac OS X 10.6 (Snow Leopard)\n* Mac OS X 10.7 (Lion)\n* Mac OS X 10.8 (Mountain Lion)\n* Mac OS X 10.9 (Mavericks)\n* Various flavors of Linux\n\nOthers will probably work as well. The OpenCL included with Mac OS X\nhas several bugs that lead to failures in some of the Harlan test\ncases. For the most part, these failures can be ignored.\n\nHarlan requires an OpenCL implementation as well as a compatible\nScheme. Below are several OpenCL implementations that should work.\n\n* [Intel OpenCL SDK](http://software.intel.com/en-us/vcsource/tools/opencl-sdk)\n* [NVIDIA CUDA Toolkit](http://developer.nvidia.com/cuda-toolkit)\n* [AMD Accelerated Parallel Processing (APP) SDK](http://developer.amd.com/tools-and-sdks/opencl-zone/opencl-tools-sdks/amd-accelerated-parallel-processing-app-sdk/)\n\nHarlan is known to work with (Petite) Chez Scheme and [Vicare]. Petite\nChez Scheme can be downloaded from http://www.scheme.com/download.\n\n[Vicare]: https://github.com/marcomaggi/vicare\n\nOnce all the prerequisites are installed, you can compile and run the\ntest suite as follows.\n\n    make check\n\nIf the tests are successful, you will see the following at the end of\nall the output:\n\n    All tests succeeded.\n\nThe test programs are available in the `test` directory. End-to-end\ntest programs have the `.kfc` extension. Other extensions represent\ncode that is valid at various intermediate passes in the compiler.\n\nMake puts test binaries in the `test.bin` directory, and also saves\noutput from test programs here. Programs may be run directly from this\ndirectory for easier debugging.\n\nHarlan programs can be compiled manually as follows.\n\n    ./harlanc hello.kfc\n\nFor debugging purposes, the `-v` flag can be used.\n\n    ./harlanc -v hello.kfc\n\nThis causes the compiler to write out the intermediate results from\neach compiler pass.\n\nAssuming the Harlan compiler is successful, the compiler will produce\nan executable based on the program's filename. For example, the\nprevious example will produce the file `hello`, which can be executed\ndirectly.\n\nNext Steps\n----------\n\nThe official Harlan documentation is currently held in the [Harlan Wiki].\n\nThe Harlan mailing list is [harlan-dev]. Feel free to join this group\nand ask questions of the Harlan developers and other Harlan users.\n\n[Harlan Wiki]: https://github.com/eholk/harlan/wiki\n[harlan-dev]: https://groups.google.com/forum/#!forum/harlan-dev\n\nDirectory Structure\n----------\n\nHere is a quick overview of the various directories included in this\nrepository.\n\n- `HSBencher` - a utility to automatically run and report the results of\nHarlan benchmarks.\n- `etc` - miscellaneous tools, including an Emacs mode for Harlan files.\n- `external` - the location of several git submodules, including the\n[Nanopass Framework] and [Elegant Weapons].\n- `harlan` - the source code for the Harlan compiler.\n- `lib` - the standard library for Harlan.\n- `rt` - the runtime library for Harlan.\n- `test` - Harlan test cases and benchmarks.\n- `test.bin` - Harlan's test runner (`run-tests.scm`) stores the\ncompiled binaries and program output for the test cases here.\n- `travis` - support files for running Harlan's test suite under\n  [Travis CI].\n- `util` - miscellaneous Scheme files, including compatability shims for\n  different Scheme implementations.\n\n[Nanopass Framework]: https://github.com/akeep/nanopass-framework\n[Elegant Weapons]: https://github.com/eholk/elegant-weapons\n[Travis CI]: https://travis-ci.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feholk%2Fharlan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feholk%2Fharlan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feholk%2Fharlan/lists"}