All Projects → goby-lang → Goby

goby-lang / Goby

Licence: mit
Goby - Yet another programming language written in Go

Programming Languages

go
31211 projects - #10 most used programming language
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Goby

Monkey
Interpreter with support for class, linq, sql, net, http, fmt, json and A realtime syntax highlighting REPL.
Stars: ✭ 347 (-89.47%)
Mutual labels:  interpreter, object-oriented
Kinx
Looks like JavaScript, feels like Ruby, and it is a script language fitting in C programmers.
Stars: ✭ 134 (-95.93%)
Mutual labels:  interpreter, object-oriented
Gravity
Gravity Programming Language
Stars: ✭ 3,968 (+20.39%)
Mutual labels:  interpreter, object-oriented
foolang
A toy programming language.
Stars: ✭ 33 (-99%)
Mutual labels:  interpreter, object-oriented
Magpie
🐦 Successor of my monkey Interpreter(support for class, linq, sql, net, http, fmt, json and A realtime syntax highlighting REPL).
Stars: ✭ 88 (-97.33%)
Mutual labels:  interpreter, object-oriented
snap
Snap Programming Language
Stars: ✭ 20 (-99.39%)
Mutual labels:  interpreter, object-oriented
Brainfuck
Brainfuck interpreter written in C
Stars: ✭ 275 (-91.66%)
Mutual labels:  interpreter
Makejs
A sub Javascript interpreter for interpreting itself
Stars: ✭ 297 (-90.99%)
Mutual labels:  interpreter
Melang
A script language of preemptive scheduling coroutine in single thread
Stars: ✭ 273 (-91.72%)
Mutual labels:  interpreter
Schemy
A lightweight embeddable Scheme-like interpreter for configuration
Stars: ✭ 269 (-91.84%)
Mutual labels:  interpreter
Json Server Heroku
Deploy json-server to Heroku & Azure 🆙 🆓
Stars: ✭ 310 (-90.59%)
Mutual labels:  api-server
Clojush
The Push programming language and the PushGP genetic programming system implemented in Clojure.
Stars: ✭ 305 (-90.75%)
Mutual labels:  interpreter
Jace
Jace.NET is a calculation engine for the .NET platform.
Stars: ✭ 296 (-91.02%)
Mutual labels:  interpreter
Eval5
A JavaScript interpreter written in TypeScript - Support ES5
Stars: ✭ 281 (-91.47%)
Mutual labels:  interpreter
Awesome Graal
A curated list of awesome resources for Graal, GraalVM, Truffle and related topics
Stars: ✭ 302 (-90.84%)
Mutual labels:  interpreter
Chn Eolinker Ams Lite 4.0 For Java
中国最大的API接口管理平台,3.x开源发行版,支持多国语言[英语、简体中文、繁体中文]
Stars: ✭ 275 (-91.66%)
Mutual labels:  api-server
Calculatex
in progress pretty printing calculator language
Stars: ✭ 302 (-90.84%)
Mutual labels:  interpreter
Swiftpascalinterpreter
Simple Swift interpreter for the Pascal language inspired by the Let’s Build A Simple Interpreter article series.
Stars: ✭ 270 (-91.81%)
Mutual labels:  interpreter
Lbforth
Self-hosting metacompiled Forth, bootstrapping from a few lines of C; targets Linux, Windows, ARM, RISC-V, 68000, PDP-11, asm.js.
Stars: ✭ 293 (-91.11%)
Mutual labels:  interpreter
Rbpf
Rust virtual machine and JIT compiler for eBPF programs
Stars: ✭ 306 (-90.72%)
Mutual labels:  interpreter

Goby

Build Status GoDoc Go Report Card codecov Readme Score Snap Status Open Source Helpers Reviewed by Hound

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.

The expected use case for Goby would be backend development. With this goal, it equips (but not limited to) the following features:

  • thread/channel mechanism powered by Go's goroutine
  • Builtin database library (currently only support PostgreSQL adapter)
  • JSON support
  • Plugin system that can load existing Go packages dynamically (Only for Linux and MacOS right now)
  • Accessing Go objects from Goby directly

Note: Goby had formerly been known as "Rooby", which was renamed in May 2017.

Table of contents

Demo screen and sample Goby app

Click to see the demo below (powered by asciinema and GIPHY).

New! Check-out our sample app built with Goby. Source code is also available here.

Structure

3D Visualization

A 3D visualization of Goby codebase, powered by GoCity

Goby 3D Visualization

Major Features

  • Plugin system
    • Allows using Go libraries (packages) dynamically
    • Allows calling Go's methods from Goby directly (only on Linux for now)
  • Builtin multi-threaded server and DB library
  • REPL (run goby -i)

Here's a complete list of all the features.

Installation

Confirmed Goby runs on Mac OS and Linux for now. Try Goby on Windows and let us know the result.

A. Via Homebrew (binary installation for Mac OS)

Note: Please check the latest release before installing Goby via Homebrew

brew tap goby-lang/goby
brew install goby

In the case, $GOBY_ROOT is automatically configured.

B. From Source

Try this if you'd like to contribute Goby! Skip 1 if you already have Golang in your environment.

  1. Prepare Golang environment
    • Install Golang >= 1.14
    • Make sure $GOPATH in your shell's config file( like .bashrc) is correct
    • Add your $GOPATH/bin to $PATH
    • Add export GO111MODULE=on to your shell profile
  2. Run go get github.com/goby-lang/goby
  3. Set the Goby project's exact root path $GOBY_ROOT manually, which should be:
$GOPATH/src/github.com/goby-lang/goby

C. Installation on a Linux system

In order to install Go, Goby and PostgreSQL on a Linux system, see the wiki page.

Verifying Goby installation

  1. Run goby -v to see the version.
  2. Run goby -i to launch igb REPL.
  3. Type require "uri" in igb.

FYI: You can just run brew test goby to check Homebrew installation.

If you have any issue installing Goby, please let us know via GitHub issues

Using Docker

Goby has official docker image as well. You can try the Plugin System using docker.

Syntax highlighting

The 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.

Sublime Text 3

Sublime Text 3 users can use the Only Goby package, by typing the following in a terminal:

git clone [email protected]:saveriomiroddi/only-goby-for-sublime-text "$HOME/.config/sublime-text-3/Packages/only-goby-for-sublime-text"

this will automatically apply the Goby syntax highlighting to the .gb files.

Vim

Vim users can use the vim-goby-syntax-highlighting definition, by typing the following in a terminal:

mkdir -p "$HOME/.vim/syntax"
wget -O "$HOME/.vim/syntax/goby.vim" https://raw.githubusercontent.com/saveriomiroddi/vim-goby-syntax-highlighting/master/goby.vim
echo 'au BufNewFile,BufRead *.gb    setf goby' >> "$HOME/.vim/filetype.vim"

this will automatically apply the Goby syntax highlighting to the .gb files.

SpaceVim

SpaceVim users can load the lang#goby layer by adding following configuration:

[[layers]]
  name = "lang#goby"

Sample codes

More sample Goby codes can be found in sample directory.

Joining to Goby

Join us on Slack!

See the guideline.

Maintainers

  • @st0012
  • @hachi8833
  • @saveriomiroddi

Designer

Supporters

Sponsors

Powered by

JetBrains Goland

Supporting Goby by sending your first PR! See contribution guideline

References

The 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:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].