Giter Club home page Giter Club logo

goby's Introduction

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.

One of our goal is to provide web developers a sort of small and handy environment that mainly focusing on creating API servers or microservices. For this, Goby includes the following native features:

  • Robust thread/channel mechanism powered by Go's goroutine
  • Builtin high-performance HTTP server
  • 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

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

Structure

Aspects

Goby has several aspects: language specification, design of compiler and vm, implementation (just one for now), library, and the whole of them. See more

We are optimizing and expanding Goby all the time. Toward the first release, we've been focusing on implementing Goby first.

Major Features

  • Plugin system
    • Allows to use Go libraries (packages) dynamically
    • Allows to call 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.

Current roadmap

See wiki: Current roadmap

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.10
    • Make sure $GOPATH in your shell's config file( like .bashrc) is correct
    • Add you $GOPATH/bin to $PATH
  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.

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
  • @ear7h

Designer

Support Us

Donations

Support us with a monthly donation and help us continue our activities. [Become a backer]

Sponsors

Powered by

JetBrains Goland

Supporting Goby by sending your first PR! See contribution guideline

Or support us on opencollective

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:

goby's People

Contributors

st0012 avatar hachi8833 avatar 64kramsystem avatar alexius-huang avatar ear7h avatar eliothedeman avatar adlerhsieh avatar shes50103 avatar janczer avatar kachick avatar appleboy avatar hanachin avatar sumlare avatar mattn avatar adelcambre avatar d6o avatar xdamman avatar whilei avatar amohamedali avatar evandandrea avatar jaynagpaul avatar salbertson avatar gitter-badger avatar weichiachang avatar bronzdoc avatar codetriage-readme-bot avatar girishramnani avatar koduki avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.