{"id":13607876,"url":"https://github.com/alantech/alan","last_synced_at":"2025-04-12T14:31:25.376Z","repository":{"id":37131364,"uuid":"264023624","full_name":"alantech/alan","owner":"alantech","description":"Autoscalable Programming Language","archived":false,"fork":false,"pushed_at":"2025-03-31T13:43:24.000Z","size":9892,"stargazers_count":312,"open_issues_count":12,"forks_count":11,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-05T20:19:00.507Z","etag":null,"topics":["alan","parallelization","programming-language"],"latest_commit_sha":null,"homepage":"https://alan-lang.org","language":"Rust","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/alantech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2020-05-14T20:58:07.000Z","updated_at":"2025-03-31T13:43:27.000Z","dependencies_parsed_at":"2024-03-17T22:31:16.160Z","dependency_job_id":"c3ef5a70-5699-47e9-97a9-b8f07d4024de","html_url":"https://github.com/alantech/alan","commit_stats":{"total_commits":466,"total_committers":14,"mean_commits":"33.285714285714285","dds":0.5364806866952789,"last_synced_commit":"ae692a77fbf00e7b6d0f7297315006ea6f717d17"},"previous_names":[],"tags_count":150,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alantech%2Falan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alantech%2Falan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alantech%2Falan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alantech%2Falan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alantech","download_url":"https://codeload.github.com/alantech/alan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248581154,"owners_count":21128111,"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":["alan","parallelization","programming-language"],"created_at":"2024-08-01T19:01:22.416Z","updated_at":"2025-04-12T14:31:25.367Z","avatar_url":"https://github.com/alantech.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://docs.alan-lang.org/assets/logo.png\" alt=\"drawing\" width=\"180\"/\u003e\n  \u003ch2\u003eThe Alan Programming Language\u003c/h2\u003e\n\u003c/div\u003e\n\n[![CI](https://github.com/alantech/alan/actions/workflows/rust.yml/badge.svg)](https://github.com/alantech/alan/actions/workflows/rust.yml)\n[![Docs](https://img.shields.io/badge/docs-mdbook-blue)](https://docs.alan-lang.org)\n[![Discord](https://img.shields.io/badge/discord-alanlang-purple)](https://discord.gg/XatB9we)\n[![Reddit](https://img.shields.io/badge/reddit-alanlang-red)](https://www.reddit.com/r/alanlang)\n[![Website](https://img.shields.io/badge/website-alan--lang.org-blue)](https://alan-lang.org)\n\n**🚧 CONSTRUCTION IN PROGRESS** - This language is being reworked for a new purpose in a backwards-incompatible way. The currently published documentation is for the [v0.1](https://github.com/alantech/alan/tree/v0.1) iteration of Alan, which is more stable and capable than the v0.2 code on the `main` branch.\n\n**🔭 Predictable runtime for all computations** - A program is represented as DAG(s) where the running time for all computations can be predicted because there is no unbounded recursion or iteration.\n\n**⛓ Transparent GPGPU programming** - Alan's restrictions on recursion and iteration allows for automatic generation of compute shaders for your code. (Not yet implemented)\n\n**✅ Almost no runtime errors** - No deadlocks, livelocks, undefined variables, divide-by-zero, integer under/overflow, array out-of-bounds access, etc. Due to the type system and the standard library primitives provided to you.\n\n**⚡️ Native performance with Rust** - Alan's new compiler transforms your code into Rust before finally generating a binary for your platform, without needing to worry about memory management or GC pauses by handling Rust's borrow checker for you.\n\n---------------------------------\n\u003cbr/\u003e\n\n👩‍🚀 Alan is a programming language that makes the power of the GPU more accessible, with a syntax similar to a dynamic language (it's typed, but 100% inferred), and restrictions on recursion and iteration to make automatic generation of multi-threaded CPU and GPGPU versions of your code for you.\n\n\u003cbr/\u003e\n\u003ch2 align=\"center\"\u003eInstallation\u003c/h2\u003e\n\u003cbr/\u003e\n\nCurrently, the only way to install `alan` is to have a working `rust` development environment along with `git` to clone this repo and install it manually:\n\n```bash\ngit clone https://github.com/alantech/alan\ncd alan\ncargo install --path alan\n```\n\nalan v0.2 has been tested on x86-64 for Windows, Mac, and Linux, ARM64 for Linux and Mac, and RISC-V for Linux.\n\n\u003cbr/\u003e\n\u003ch2 align=\"center\"\u003eUsage\u003c/h2\u003e\n\u003cbr/\u003e\n\nTo compile, simply:\n\n```\nalan compile \u003csource\u003e.ln\n```\n\nThis will create a file with the name `\u003csource\u003e` that you can run (or error if it fails to compile).\n\n\u003cbr/\u003e\n\u003ch2 align=\"center\"\u003eContribution\u003c/h2\u003e\n\u003cbr/\u003e\n\n**Source Installation:**\n\nIf you wish to contribute to Alan, you'll need a development environment to build Alan locally:\n\n* git (any recent version should work)\n* Rust \u003e=1.83.0\n* Node.js \u003e=18.0.0\n* A complete C toolchain (gcc, clang, msvc)\n\nOnce those are installed, simply follow the install instructions above, replacing `cargo install --path .` with a simple `cargo build` to compile and `cargo test` to run the test suite.\n\n**Unit and Integration Tests:**\n\nThe tests are included within the Rust source files. Test coverage is not yet 100%, with the majority of unit tests in the `src/parse.rs` file defining the Alan syntax parser. The unit tests directly follow the functions they test, instead of all being at the end as is standard in Rust, because it seemed easier to read that way. These tests all pass.\n\nBeyond that are integration tests in the `src/compile.rs` file, making up the vast majority of that file (which for release is just a single function that is a small wrapper around the transpilation code in `lntors.rs`). Few of these tests currently pass, as they were inherited from the Alan v0.1 test suite. Most are planned for revival but some may be changed or dropped.\n\n\u003cbr/\u003e\n\u003ch2 align=\"center\"\u003eLicense\u003c/h2\u003e\n\u003cbr/\u003e\n\nMIT\n","funding_links":[],"categories":["Rust","Uncategorized","TypeScript","Other"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falantech%2Falan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falantech%2Falan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falantech%2Falan/lists"}