{"id":13469966,"url":"https://github.com/ark-lang/ark","last_synced_at":"2025-12-17T09:15:10.039Z","repository":{"id":24068265,"uuid":"27454562","full_name":"ark-lang/ark","owner":"ark-lang","description":"A compiled systems programming language written in Go using the LLVM framework","archived":true,"fork":false,"pushed_at":"2019-05-29T14:05:43.000Z","size":16136,"stargazers_count":677,"open_issues_count":45,"forks_count":47,"subscribers_count":40,"default_branch":"master","last_synced_at":"2024-08-01T16:18:07.302Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ark-lang.github.io/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ark-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-12-02T21:32:52.000Z","updated_at":"2024-07-29T18:38:26.000Z","dependencies_parsed_at":"2022-08-22T10:40:21.121Z","dependency_job_id":null,"html_url":"https://github.com/ark-lang/ark","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark-lang%2Fark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark-lang%2Fark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark-lang%2Fark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark-lang%2Fark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ark-lang","download_url":"https://codeload.github.com/ark-lang/ark/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222131035,"owners_count":16936304,"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":[],"created_at":"2024-07-31T16:00:20.025Z","updated_at":"2025-12-17T09:15:09.949Z","avatar_url":"https://github.com/ark-lang.png","language":"Go","readme":"## Ark [![Build Status](https://api.travis-ci.org/ark-lang/ark.svg?branch=master)][1] [![license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](https://raw.githubusercontent.com/ark-lang/ark/master/LICENSE)\n[1]: https://travis-ci.org/ark-lang/ark \"Build Status\"\n\n\u003cimg width=\"50%\" align=\"right\" style=\"display: block; margin:40px auto;\" src=\"https://raw.githubusercontent.com/ark-lang/ark-gl/master/example.gif\"\u003e\n\n[Ark](//www.ark-lang.org) is a systems programming language focused on being practical and pragmatic. We want a language that is simple, easy to write, yet powerful enough to create readable, performant and concise code for any problem\n\nOn the right is a gif of an example program [ark-gl](//github.com/ark-lang/ark-gl) written in Ark using OpenGL and GLFW.\n\n## Index\n* [Getting Involved](#getting-involved)\n* [Example](#example)\n* [Installing](#installing)\n    * [Dependencies](#dependencies)\n    * [Building](#building)\n    * [Compiling Ark code](#compiling-ark-code)\n\n## \u003ca name=\"getting-involed\"\u003e\u003c/a\u003e Getting Involved\nCheck out the [contributing guide](/CONTRIBUTING.md), there's a lot of information there to give you ideas of how you can help out.\n\n## \u003ca name=\"example\"\u003e\u003c/a\u003e Example\nArk is still a work in progress, this code sample reflects what Ark can\ndo *currently*, though the way you write the following will likely change\nin the near future.\n\nMore examples can be found [here](/examples).\n\n```rust\n// binding to printf\n[c] func printf(fmt: ^u8, ...);\n\npub func main(argc: int, argv: ^^u8) -\u003e int {\n    // accessed via the C module\n    C::printf(c\"Running %s\\n\", ^argv);\n\n    // mutable i, type inferred\n    mut i := 0;\n\n    for i \u003c 5 {\n        C::printf(c\"%d\\n\", i);\n\n        i += 1;\n    }\n    return 0;\n}\n```\n\n## \u003ca name=\"installing\"\u003e\u003c/a\u003e Installing\nInstalling Ark is simple, you'll need a few dependencies\nbefore you get started:\n\n### \u003ca name=\"dependencies\"\u003e\u003c/a\u003e Dependencies\n* Go installed and `$GOPATH` setup - [Instructions on setting up GOPATH](//golang.org/doc/code.html#GOPATH)\n* For building LLVM bindings:\n  * Subversion\n  * A C++ Compiler\n  * CMake installed\n  * `libedit-dev` installed\n\n### \u003ca name=\"building\"\u003e\u003c/a\u003e Building\nOnce you have your dependencies setup, building ark from scratch is done by\nrunning the following commands:\n\n```bash\n$ git clone https://github.com/ark-lang/go-llvm.git $GOPATH/src/github.com/ark-lang/go-llvm\n$ cd $GOPATH/src/github.com/ark-lang/go-llvm\n$ ./build.sh\n$ go get github.com/ark-lang/ark/...\n```\n\nThe `ark` binary will be built in `$GOPATH/bin`. To use the compiler,\nmake sure `$GOPATH/bin` is in your `$PATH`.\n\n### \u003ca name=\"compiling-ark-code\"\u003e\u003c/a\u003e Compiling Ark code\nCurrently the module system Ark uses is a work in progress. As of writing this,\neach ark file represents a module. A module has a child-module \"C\" which\ncontains all of the C functions and other bindings you may write.\n\nGiven the following project structure:\n\n    src/\n      - entities/\n        - entity.ark\n        - player.ark\n      - main.ark\n\nTo compile this, you would pass through the file which contains the main\nentry point (main function) to your program, which is conventionally named \"main.ark\".\n\nSince our main file is in another folder, we need to set the src folder as\nan include directory so that the compiler doesn't think it's a module. We use\nthe `-I` flag for this:\n\n    ark build -I src src/main.ark --loglevel=debug\n\nThis should compile your code, and produce an executable called \"main\", which\nyou can then run.\n\nFor more information on the module system and how it works,\nrefer to the [\"Modules and Dependencies\"](http://book.ark-lang.org/modules.html)\nsection in the Ark reference.\n\nFor more information on program flags, refer to the\n[\"Program Input\"](http://book.ark-lang.org/source.html), section in the Ark\nreference.\n","funding_links":[],"categories":["Go","Uncategorized"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fark-lang%2Fark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fark-lang%2Fark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fark-lang%2Fark/lists"}