A Ruby VM written in Go aims to exploit parallelism via Software Transactional Memory
Clone or download
brucehsu Merge pull request #18 from brucehsu/big_int
Big int instead of 64-bit integer
Latest commit 6f25171 Sep 11, 2015
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Use big.Int instead of int64 in array length Sep 9, 2015
tests Add factorial benchmark Sep 9, 2015
.gitignore Initial commit Mar 11, 2014
.travis.yml Add Travis CI config Sep 15, 2014
LICENSE Update LICENSE Mar 11, 2014
Makefile Update Makefile to include GOPATH Sep 15, 2014
README.md Add license badge to README Jan 9, 2015

README.md

GobiesVM

Build Status License

A Ruby VM written in Go aims to exploit parallelism via Software Transactional Memory.

Build

git clone https://github.com/brucehsu/GobiesVM.git
cd GobiesVM
make goenv
source goenv
make

The executable will be placed inside bin/.

Usage

gobiesvm [OPTIONS] RBFILE

Options:
  -ast: Print abstract syntax tree structure
  -bench=[0]: Benchmark script execution speed (without parsing stage)
  -bytecode: Print comprehensive bytecode instructions
  -log: Log transaction status

What is supported

  • Object manipulations (creation, method calling)
  • Variable assignment
  • Integer
  • Float
  • String (single-quoted)
  • Basic string operations
  • Blocks
  • Iterators
  • Arrays
  • Hashes
  • Threads
  • Basic IO

What is NOT supported (yet)

  • Conditional statements
  • Class/method definition
  • Native extension interface
  • Rubygems

Related Paper

Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level