{"id":13526862,"url":"https://github.com/goby-lang/goby","last_synced_at":"2025-05-14T18:06:56.534Z","repository":{"id":41397989,"uuid":"81311270","full_name":"goby-lang/goby","owner":"goby-lang","description":"Goby - Yet another programming language written in Go","archived":false,"fork":false,"pushed_at":"2023-02-25T04:27:37.000Z","size":8340,"stargazers_count":3509,"open_issues_count":34,"forks_count":175,"subscribers_count":84,"default_branch":"master","last_synced_at":"2025-05-10T23:27:10.120Z","etag":null,"topics":["api-server","bytecode","goby","goby-codes","goby-language","golang","interpreter","object-oriented","ruby"],"latest_commit_sha":null,"homepage":"","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/goby-lang.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}},"created_at":"2017-02-08T09:23:33.000Z","updated_at":"2025-05-09T05:37:25.000Z","dependencies_parsed_at":"2023-07-14T03:30:42.446Z","dependency_job_id":null,"html_url":"https://github.com/goby-lang/goby","commit_stats":{"total_commits":2282,"total_committers":47,"mean_commits":48.5531914893617,"dds":0.5030674846625767,"last_synced_commit":"0589a71a10e0b73524db57ec13108b86f2ef61cf"},"previous_names":["st0012/rooby","rooby-lang/rooby"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goby-lang%2Fgoby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goby-lang%2Fgoby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goby-lang%2Fgoby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goby-lang%2Fgoby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goby-lang","download_url":"https://codeload.github.com/goby-lang/goby/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253641034,"owners_count":21940664,"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":["api-server","bytecode","goby","goby-codes","goby-language","golang","interpreter","object-oriented","ruby"],"created_at":"2024-08-01T06:01:36.213Z","updated_at":"2025-05-14T18:06:51.527Z","avatar_url":"https://github.com/goby-lang.png","language":"Go","readme":"![Goby](http://i.imgur.com/ElGAzRn.png?3)\n=========\n\n[![](https://goby-slack-invite.herokuapp.com/badge.svg)](https://goby-slack-invite.herokuapp.com)\n[![Build Status](https://travis-ci.com/goby-lang/goby.svg?branch=master)](https://travis-ci.com/goby-lang/goby)\n[![GoDoc](https://godoc.org/github.com/goby-lang/goby?status.svg)](https://godoc.org/github.com/goby-lang/goby)\n[![Go Report Card](https://goreportcard.com/badge/github.com/goby-lang/goby)](https://goreportcard.com/report/github.com/goby-lang/goby)\n[![codecov](https://codecov.io/gh/goby-lang/goby/branch/master/graph/badge.svg)](https://codecov.io/gh/goby-lang/goby)\n[![Readme Score](http://readme-score-api.herokuapp.com/score.svg?url=goby-lang/goby)](http://clayallsopp.github.io/readme-score?url=goby-lang/goby)\n[![Snap Status](https://build.snapcraft.io/badge/goby-lang/goby.svg)](https://build.snapcraft.io/user/goby-lang/goby)\n[![Open Source Helpers](https://www.codetriage.com/goby-lang/goby/badges/users.svg)](https://www.codetriage.com/goby-lang/goby)\n[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)\n\n**Goby** is an object-oriented interpreter language deeply inspired by **Ruby** as well as its core implementation by 100% pure **Go**. Moreover, it has standard libraries to provide several features such as the Plugin system. Note that we do not intend to reproduce whole of the honorable works of Ruby syntax/implementation/libraries.\n\nThe expected use case for Goby would be backend development. With this goal, it equips (but not limited to) the following features:\n\n- thread/channel mechanism powered by Go's goroutine\n- Builtin database library (currently only support PostgreSQL adapter)\n- JSON support\n- [Plugin system](https://goby-lang.gitbooks.io/goby/content/plugin-system.html) that can load existing Go packages dynamically (Only for Linux and MacOS right now)\n- Accessing Go objects from Goby directly\n\n\u003e Note: Goby had formerly been known as \"Rooby\", which was renamed in May 2017.\n\n## Table of contents\n\n- [Demo screen and sample Goby app](#demo-screen-and-sample-goby-app)\n- [Structure](#structure)\n- [3D Visualization](#3d-visualization)\n- [Features](#major-features)\n- [Installation](#installation)\n- [Usage](#verifying-goby-installation)\n- [Sample codes](#sample-codes)\n- [Documentation](https://goby-lang.org/docs/introduction.html)\n- [Joining to Goby](#joining-to-goby)\n- [Maintainers](#maintainers)\n- [Supporters](#supporters)\n- [References](#references)\n\n## Demo screen and sample Goby app\n\nClick to see the demo below (powered by [asciinema](https://asciinema.org) and [GIPHY](https://giphy.com/)).\n\n![](https://github.com/goby-lang/animation-gif/blob/master/goby_demo_large.gif)\n\n**New!** Check-out our [sample app](http://sample.goby-lang.org) built with Goby. Source code is also available [here](https://github.com/goby-lang/sample-web-app).\n\n## Structure\n\n![](https://github.com/goby-lang/goby/blob/master/wiki/goby_structure.png)\n\n## 3D Visualization\n\nA 3D visualization of Goby codebase, powered by [GoCity](https://go-city.github.io/)\n\n[![Goby 3D Visualization](https://github.com/goby-lang/goby/blob/master/wiki/goby_codebase_gocity-min.png)](https://go-city.github.io/#/github.com/goby-lang/goby)\n\n## Major Features\n\n- Plugin system\n    - Allows using Go libraries (packages) dynamically\n    - Allows calling Go's methods from Goby directly (only on Linux for now)\n- Builtin multi-threaded server and DB library\n- REPL (run `goby -i`)\n\nHere's a [complete list](https://github.com/goby-lang/goby/wiki/Features) of all the features.\n\n## Installation\n\nConfirmed Goby runs on Mac OS and Linux for now. Try Goby on Windows and let us know the result.\n\n### A. Via Homebrew (binary installation for Mac OS)\n\n**Note: Please check the [latest release](https://github.com/goby-lang/goby/releases) before installing Goby via Homebrew**\n\n```\nbrew tap goby-lang/goby\nbrew install goby\n```\n\nIn the case, `$GOBY_ROOT` is automatically configured.\n\n### B. From Source\n\nTry this if you'd like to contribute Goby! Skip 1 if you already have Golang in your environment.\n\n1. Prepare Golang environment\n    - Install Golang \u003e= 1.14\n    - Make sure `$GOPATH` in your shell's config file( like .bashrc) is correct\n    - Add your `$GOPATH/bin` to `$PATH`\n    - Add `export GO111MODULE=on` to your shell profile\n2. Run `go get github.com/goby-lang/goby`\n3. Set the Goby project's exact root path `$GOBY_ROOT` manually, which should be:\n\n```\n$GOPATH/src/github.com/goby-lang/goby\n```\n\n### C. Installation on a Linux system\n\nIn order to install Go, Goby and PostgreSQL on a Linux system, see the [wiki page](https://github.com/goby-lang/goby/wiki/Setup-Go,-Goby-and-PostgreSQL-on-a-Linux-system).\n\n### Verifying Goby installation\n\n1. Run `goby -v` to see the version.\n2. Run `goby -i` to launch igb REPL.\n3. Type `require \"uri\"` in igb.\n\nFYI: You can just run `brew test goby` to check Homebrew installation.\n\n**If you have any issue installing Goby, please let us know via [GitHub issues](https://github.com/goby-lang/goby/issues)**\n\n### Using Docker\n\nGoby has official [docker image](https://hub.docker.com/r/gobylang/goby/) as well. You can try the [Plugin System](https://goby-lang.gitbooks.io/goby/content/plugin-system.html) using docker.\n\n## Syntax highlighting\n\nThe Goby syntax is currently a subset of the Ruby one, with an exception (`get_block`), therefore, it's possible to attain syntax highlighting on any platform/editor by simply switching it to Ruby for the currently opened file.\n\n### Sublime Text 3\n\nSublime Text 3 users can use the `Only Goby` package, by typing the following in a terminal:\n\n```sh\ngit clone git@github.com:saveriomiroddi/only-goby-for-sublime-text \"$HOME/.config/sublime-text-3/Packages/only-goby-for-sublime-text\"\n```\n\nthis will automatically apply the Goby syntax highlighting to the `.gb` files.\n\n### Vim\n\nVim users can use the `vim-goby-syntax-highlighting` definition, by typing the following in a terminal:\n\n```sh\nmkdir -p \"$HOME/.vim/syntax\"\nwget -O \"$HOME/.vim/syntax/goby.vim\" https://raw.githubusercontent.com/saveriomiroddi/vim-goby-syntax-highlighting/master/goby.vim\necho 'au BufNewFile,BufRead *.gb    setf goby' \u003e\u003e \"$HOME/.vim/filetype.vim\"\n```\n\nthis will automatically apply the Goby syntax highlighting to the `.gb` files.\n\n### SpaceVim\n\nSpaceVim users can load the [`lang#goby`](https://spacevim.org/layers/lang/goby/) layer by adding following configuration:\n\n```toml\n[[layers]]\n  name = \"lang#goby\"\n```\n\n## Sample codes\n\n- [Built a stack data structure using Goby](https://github.com/goby-lang/goby/blob/master/samples/stack.gb)\n- [Running a \"Hello World\" app with built in server library](https://github.com/goby-lang/goby/blob/master/samples/server/server.gb)\n- [Sending request using http library](https://github.com/goby-lang/goby/blob/master/samples/http.gb)\n- [Running load test on blocking server](https://github.com/goby-lang/goby/blob/master/samples/server/blocking_server.gb) (This shows `Goby`'s simple server is very performant and can handle requests concurrently)\n- [One thousand threads](https://github.com/goby-lang/goby/blob/master/samples/one_thousand_threads.gb)\n\nMore sample Goby codes can be found in [sample directory](https://github.com/goby-lang/goby/tree/master/samples).\n\n## Joining to Goby\n\n**Join us on Slack!** [![](https://goby-slack-invite.herokuapp.com/badge.svg)](https://goby-slack-invite.herokuapp.com)\n\nSee the [guideline](https://github.com/goby-lang/goby/blob/master/CONTRIBUTING.md).\n\n## Maintainers\n\n- @st0012\n- @hachi8833\n- @saveriomiroddi\n\n## Designer\n- [steward379](https://dribbble.com/steward379)\n\n## Supporters\n\n\u003ca href=\"https://opencollective.com/goby/backer/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/9/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/10/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/11/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/12/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/12/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/13/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/13/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/14/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/14/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/15/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/15/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/16/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/16/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/17/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/17/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/18/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/18/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/19/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/19/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/20/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/20/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/21/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/21/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/22/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/22/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/23/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/23/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/24/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/24/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/25/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/25/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/26/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/26/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/27/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/27/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/28/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/28/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/backer/29/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/backer/29/avatar.svg\"\u003e\u003c/a\u003e\n\n### Sponsors\n\n\u003ca href=\"https://opencollective.com/goby/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/goby/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/goby/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\n### Powered by\n\n* JetBrains [Goland IDE](https://www.jetbrains.com/go/?from=goby)\n\n[![JetBrains Goland](https://github.com/goby-lang/goby/blob/master/wiki/goland_logo-text.png)](https://www.jetbrains.com/go/?from=goby)\n\n**Supporting Goby by sending your first PR! See [contribution guideline](https://github.com/goby-lang/goby/blob/master/CONTRIBUTING.md)**\n\n\n## References\n\nThe followings are the essential resources to create Goby; I highly recommend you to check them first if you'd be interested in building your own languages:\n\n- [Write An Interpreter In Go](https://interpreterbook.com)\n- [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2/home/welcome)\n- [Ruby under a microscope](http://patshaughnessy.net/ruby-under-a-microscope)\n- [YARV's instruction table](http://www.atdot.net/yarv/insnstbl.html)\n","funding_links":["https://opencollective.com/goby/backer/0/website","https://opencollective.com/goby/backer/1/website","https://opencollective.com/goby/backer/2/website","https://opencollective.com/goby/backer/3/website","https://opencollective.com/goby/backer/4/website","https://opencollective.com/goby/backer/5/website","https://opencollective.com/goby/backer/6/website","https://opencollective.com/goby/backer/7/website","https://opencollective.com/goby/backer/8/website","https://opencollective.com/goby/backer/9/website","https://opencollective.com/goby/backer/10/website","https://opencollective.com/goby/backer/11/website","https://opencollective.com/goby/backer/12/website","https://opencollective.com/goby/backer/13/website","https://opencollective.com/goby/backer/14/website","https://opencollective.com/goby/backer/15/website","https://opencollective.com/goby/backer/16/website","https://opencollective.com/goby/backer/17/website","https://opencollective.com/goby/backer/18/website","https://opencollective.com/goby/backer/19/website","https://opencollective.com/goby/backer/20/website","https://opencollective.com/goby/backer/21/website","https://opencollective.com/goby/backer/22/website","https://opencollective.com/goby/backer/23/website","https://opencollective.com/goby/backer/24/website","https://opencollective.com/goby/backer/25/website","https://opencollective.com/goby/backer/26/website","https://opencollective.com/goby/backer/27/website","https://opencollective.com/goby/backer/28/website","https://opencollective.com/goby/backer/29/website","https://opencollective.com/goby"],"categories":["Uncategorized","Go","golang"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoby-lang%2Fgoby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoby-lang%2Fgoby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoby-lang%2Fgoby/lists"}