{"id":13813509,"url":"https://github.com/refaktor/rye","last_synced_at":"2026-03-06T01:20:56.405Z","repository":{"id":42861549,"uuid":"285247837","full_name":"refaktor/rye","owner":"refaktor","description":"homoiconic dynamic programming language with some new ideas","archived":false,"fork":false,"pushed_at":"2024-04-09T09:38:12.000Z","size":114175,"stargazers_count":273,"open_issues_count":3,"forks_count":14,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-04-10T04:00:14.655Z","etag":null,"topics":["console","factor","golang","programming-language","rebol","ryelang"],"latest_commit_sha":null,"homepage":"https://ryelang.org","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/refaktor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2020-08-05T09:53:50.000Z","updated_at":"2024-04-15T11:42:43.643Z","dependencies_parsed_at":"2023-10-25T00:32:03.229Z","dependency_job_id":"a8a2ef29-8976-4530-a7c4-9d9eebe43648","html_url":"https://github.com/refaktor/rye","commit_stats":{"total_commits":330,"total_committers":5,"mean_commits":66.0,"dds":0.4636363636363636,"last_synced_commit":"e5f4432cf395ad1fc06c52dfdbc2d8fe93fdf648"},"previous_names":["refaktor/nekozito"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refaktor%2Frye","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refaktor%2Frye/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refaktor%2Frye/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refaktor%2Frye/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/refaktor","download_url":"https://codeload.github.com/refaktor/rye/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225319253,"owners_count":17455735,"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":["console","factor","golang","programming-language","rebol","ryelang"],"created_at":"2024-08-04T04:01:19.858Z","updated_at":"2026-01-20T13:07:50.904Z","avatar_url":"https://github.com/refaktor.png","language":"Go","readme":"# Rye language 🌾\n\n[![Build and Test](https://github.com/refaktor/rye/actions/workflows/build.yml/badge.svg)](https://github.com/refaktor/rye/actions/workflows/build.yml)\n[![golangci-lint](https://github.com/refaktor/rye/actions/workflows/golangci-lint.yml/badge.svg)](https://github.com/refaktor/rye/actions/workflows/golangci-lint.yml)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/refaktor/rye/badge)](https://securityscorecards.dev/viewer/?uri=github.com/refaktor/rye)\n[![Go Reference](https://pkg.go.dev/badge/github.com/refaktor/rye.svg)](https://pkg.go.dev/github.com/refaktor/rye)\n[![Go Report Card](https://goreportcard.com/badge/github.com/refaktor/rye)](https://goreportcard.com/report/github.com/refaktor/rye)\n[![GitHub Release](https://img.shields.io/github/release/refaktor/rye.svg?style=flat)](https://github.com/refaktor/rye/releases/latest)\n[![Homebrew](https://img.shields.io/homebrew/v/ryelang.svg?style=flat)](https://formulae.brew.sh/formula/ryelang)\n\n**For comprehensive documentation, tutorials, and examples, visit [ryelang.org](https://ryelang.org/)**\n\n## What is Rye?\n\nRye is a high-level, dynamic programming language inspired by Rebol, Factor, Linux shells, and Go. It features a Go-based interpreter and interactive console, making it an excellent scripting companion for Go programs. Rye can also be embedded into Go applications as a scripting or configuration language.\n\nKey characteristics:\n- **Homoiconic**: Code is data, data is code\n- **Function-oriented**: No keywords, everything is a function call\n- **Expression-based**: Everything returns a value\n- **First-class functions**: Functions and code blocks are values\n- **Multiple dialects**: Specialized interpreters for different tasks\n- **Safety-focused**: Explicit state changes, pure/impure function separation, validation dialect\n\n**Status**: Alpha - Core language design is stable, focus is on improving runtime, documentation, and usability.\n\n## Quick Examples\n\n```red\nprint \"Hello World\"\n\n\"Hello World\" .replace \"World\" \"Mars\" |print\n; prints: Hello Mars\n\n\"12 8 12 16 8 6\" .load .unique .sum\n; returns: 42\n\n{ \"Anne\" \"Joan\" \"Adam\" } |filter { .first = \"A\" } |for { .print } \n; prints:\n; Anne\n; Adam\n\nfac: fn { x } { either x = 1 { 1 } { x * fac x - 1 } }\n; function that calculates factorial\nrange 1 10 |map { .fac } |print\\csv\n; prints: 1,2,6,24,120,720,5040,40320,362880,3628800\n\nkind: \"admin\"\nOpen sqlite://data.db |Query { select * from user where kind = ?kind }\n; returns: Table of admins\n\nRead %name.txt |fix { \"Anonymous\" } |Post* https://example.com/postname 'text\n; makes HTTP post of the name read from a file, or \"Anonymous\" if file failed to be read\n```\n\nFor more examples and interactive demos, visit [ryelang.org/meet_rye/](https://ryelang.org/meet_rye/)\n\n## Building Rye from Source\n\n### Prerequisites\n\n1. Install Go 1.21.5 or later:\n   ```bash\n   # Example for Linux\n   wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz\n   rm -rf /usr/local/go \u0026\u0026 tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz\n   export PATH=$PATH:/usr/local/go/bin\n   go version\n   ```\n\n### Clone and Build\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/refaktor/rye.git\n   cd rye\n   ```\n\n2. Build options:\n\n   - **Minimal build** (fewer modules, smaller binary):\n     ```bash\n     go build -tags \"b_tiny\" -o bin/rye\n     ```\n\n   - **Standard build** (most modules included):\n     ```bash\n     go build -o bin/rye\n     # or simply\n     ./build\n     ```\n\n   - **Custom build** (select specific modules):\n     ```bash\n     go build -tags \"b_tiny,b_sqlite,b_http,b_json\" -o bin/rye\n     ```\n\n3. Run Rye:\n   ```bash\n   # Run the REPL\n   bin/rye\n   \n   # Run a script\n   bin/rye script.rye\n   ```\n\n### Building WASM Version\n\nRye can run in browsers and other WASM environments:\n\n```bash\nGOOS=js GOARCH=wasm go build -tags \"b_tiny\" -o wasm/rye.wasm main_wasm.go\n# or use the helper script\n./buildwasm\n# Then visit http://localhost:8085/ryeshell/\n```\n\n### Running Tests\n\n```bash\ncd info\n../bin/rye . test\n\n# Generate function reference\n../bin/rye . doc\n```\n\n## Getting Rye (Pre-built)\n\nIf you prefer not to build from source, you have several options:\n\n### Binaries\n\nPre-compiled binaries for **Linux**, **macOS**, **Windows**, and **WASM** are available under [Releases](https://github.com/refaktor/rye/releases).\n\n### Package Managers\n\n- **Homebrew** (macOS/Linux):\n  ```bash\n  brew install ryelang\n  ```\n\n- **ArchLinux User Repository** (Arch Linux):\n  ```bash\n  yay -S ryelang\n  ```\n\n### Docker Images\n\n- **Binary image** (includes Rye and Emacs-nox):\n  ```bash\n  docker run -ti ghcr.io/refaktor/rye\n  ```\n\n- **Development image** (build from repository):\n  ```bash\n  docker build -t refaktor/rye -f .docker/Dockerfile .\n  docker run -ti refaktor/rye\n  ```\n\n## Resources\n\n- **[ryelang.org](https://ryelang.org/)** - Official documentation, tutorials, and examples\n- **[Blog](https://ryelang.org/blog/)** - Latest updates and development news\n- **[Examples folder](./examples/)** - Code examples and demos\n- **[Asciinema demos](https://asciinema.org/~refaktor)** - Interactive terminal demos\n\n## Extensions and Related Projects\n\n- **[Rye-fyne](https://github.com/refaktor/rye-fyne)** - GUI toolkit binding\n- **[Rye-gio](https://github.com/refaktor/rye-gio)** - Gioui toolkit binding (WIP)\n- **[Rye-ebitengine](https://github.com/refaktor/rye-ebitengine)** - 2D game engine binding (WIP)\n- **[ryegen](https://github.com/refaktor/ryegen)** - Binding generation toolkit (WIP)\n\n## Editor Support\n\n- **VS Code**: Search for \"ryelang\" in the Extension marketplace [repository](https://github.com/refaktor/rye-vscode)\n- **Emacs**: [syntax highlighting](https://github.com/refaktor/rye/tree/main/editors/emacs)\n- **NeoVIM**: [syntax highlighting](https://github.com/refaktor/rye/tree/main/editors/nvim)\n\n## Community and Contact\n\n- **[GitHub Discussions](https://github.com/refaktor/rye/discussions)**\n- **[Reddit](https://reddit.com/r/ryelang/)**\n- **[Issues](https://github.com/refaktor/rye/issues)**\n- **Email**: janko.itm+rye[at]gmail.com\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefaktor%2Frye","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frefaktor%2Frye","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefaktor%2Frye/lists"}