{"id":28763570,"url":"https://github.com/flink-extended/clink","last_synced_at":"2026-02-21T16:02:34.736Z","repository":{"id":43532775,"uuid":"331871248","full_name":"flink-extended/clink","owner":"flink-extended","description":"Clink is a library that provides APIs and infrastructure to facilitate the development of parallelizable feature engineering operators that can be used in both C++ and Java runtime.","archived":false,"fork":false,"pushed_at":"2022-02-21T14:16:26.000Z","size":3339,"stargazers_count":29,"open_issues_count":1,"forks_count":12,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-10-06T02:25:05.069Z","etag":null,"topics":["feature-engineering","flink-streaming","machine-learning","online-learning"],"latest_commit_sha":null,"homepage":"","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/flink-extended.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-22T07:34:39.000Z","updated_at":"2025-02-14T22:36:13.000Z","dependencies_parsed_at":"2022-08-30T02:30:57.552Z","dependency_job_id":null,"html_url":"https://github.com/flink-extended/clink","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/flink-extended/clink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flink-extended%2Fclink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flink-extended%2Fclink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flink-extended%2Fclink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flink-extended%2Fclink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flink-extended","download_url":"https://codeload.github.com/flink-extended/clink/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flink-extended%2Fclink/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29685042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T15:51:39.154Z","status":"ssl_error","status_checked_at":"2026-02-21T15:49:03.425Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["feature-engineering","flink-streaming","machine-learning","online-learning"],"created_at":"2025-06-17T09:09:48.692Z","updated_at":"2026-02-21T16:02:34.718Z","avatar_url":"https://github.com/flink-extended.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/clink_logo.png\" height=\"80px\"/\u003e\n\u003c/p\u003e\n\n# Clink\n\nClink is a library that provides infrastructure to do the following:\n- Defines C++ functions that can be parallelized by TFRT thread pool.\n- Executes a graph (in the MLIR format) of these C++ functions in parallel.\n- Makes C++ functions executable as Java functions using\n  [JNA](https://github.com/java-native-access/jna).\n\nFurthermore, Clink provides an off-the-shelf library of reusable Feature\nProcessing functions that can be executed as Java and C++ functions.\n\nClink is useful in the scenario where users want to do online feature processing\nwith low latency (in sub-millisecond) in C++, apply the same logic to do offline\nfeature processing in Java, and implement this logic only once (in C++).\n\n## Getting Started\n\n### Prerequisites\n\nClink uses [TFRT](https://github.com/tensorflow/runtime) as the underlying\nexecution engine and therefore follows TFRT's Operation System and installation\nrequirements.\n\nCurrently supported operating systems are as follows:\n\n- Ubuntu 16.04\n- CentOS 7.7.1908\n\nHere are the prerequisites to build and install Clink:\n- Bazel 4.0.0\n- Clang 11.1.0\n- libstdc++8 or greater\n- openjdk-8\n\nClink provides dockerfiles and pre-built docker images that satisfy the\ninstallation requirements listed above. You can use one of the following\ncommands to build the docker image, according to the operating system you expect\nto use.\n\n```bash\n$ docker build -t ubuntu:16.04_clink -f docker/Dockerfile_ubuntu_1604 .\n```\n\n```bash\n$ docker build -t centos:centos7.7.1908_clink -f docker/Dockerfile_centos_77 .\n```\n\nOr you can use one of the following commands to pull the pre-built Docker image\nfrom Docker Hub.\n\n```bash\n$ docker pull docker.io/flinkextended/clink:ubuntu16.04\n```\n\n```bash\n$ docker pull docker.io/flinkextended/clink:centos7.7.1908\n```\n\nIf you plan to set up the Clink environment without the docker images provided\nabove, please check the [TFRT](https://github.com/tensorflow/runtime) README for\nmore detailed instructions to install, configure and verify Bazel, Clang, and\nlibstdc++8.\n\n### Initializing Submodules before building Clink from Source\n\nAfter setting up the environment according to the instructions above and pulling\nClink repository, please use the following command to initialize submodules like\nTFRT before building any Clink target from source.\n\n```bash\n$ git submodule update --init --recursive\n```\n\n### Executing Examples\n\nUsers can execute Clink C++ function example in parallel in C++ using one of the\nfollowing commands.\n\n```bash\n$ bazel run //:executor -- `pwd`/mlir_test/executor/basic.mlir --work_queue_type=mstd --host_allocator_type=malloc\n```\n\n\u003c!-- TODO: Add detailed example illustrating the usage of Clink Runner API. --\u003e\n\n## Developer Guidelines\n\n### Running All Tests\n\nDevelopers can run the following command to build all targets and to run all\ntests.\n\n```bash\n$ bazel test $(bazel query //...) -c dbg\n```\n\n### Code Formatting\n\nChanges to Clink C++ code should conform to [Google C++ Style\nGuide](https://google.github.io/styleguide/cppguide.html).\n\nClink uses [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) to check\nC++ code, [diffplug/spotless](https://github.com/diffplug/spotless) to check\njava code, and [Buildifier](https://github.com/bazelbuild/buildtools) to check\nbazel code.\n\nPlease run the following command to format codes before uploading PRs for\nreview.\n\n```bash\n$ ./tools/format-code.sh\n```\n\n### View \u0026 Edit Java Code with IDE\n\nClink provides maven configuration that allows users to view or edit java code\nwith IDEs like IntelliJ IDEA. Before IDEs can correctly compile java project,\nusers need to run the following commands after setting up Clink repo and build\nClink.\n\n```bash\n$ bazel build //:clink_java_proto\n$ cp bazel-bin/libclink_proto-speed.jar java-lib/lib/\n```\n\nThen users can open `java-lib` directory with their IDEs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflink-extended%2Fclink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflink-extended%2Fclink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflink-extended%2Fclink/lists"}