Coder Social home page Coder Social logo

grubby's Introduction

grubby Build Status

Grubby is an experimental ruby written in Golang

What? Why?

Why not? Go is basically a modern C (given that it has Unicode support and concurrency primitives), and C is the language that a lot of other languages are implemented in. It seems like a worthy experiment to see if Go is a suitable language to implement other languages in.

Yes but Why Golang?

Golang doesn't always feel like the best language to implement another language in. I do enjoy that it feels like a very modern C (albeit one without guarantees on how long any function can take because of heap allocation and GC). Ultimately, my goal is to learn more about Golang and Ruby through this project. If I find out that Golang is not ideal for implementing other languages, then that is fine.

How you can help!

  1. Find some ruby behavior you would like to write
  2. Write a failing spec for it
  3. Write the code that that makes it pass
  4. Issue a pull request. It will bring a smile to my face.

Running Tests

Just run bin/test from the root directory. This builds the necessary files (currently just the parser) with goyacc first.

Contributions

I'm currently trying to get rubyspec to run against grubby, which requires a small, but sizeable amount of behavior initially. Run bin/rubyspec and you should be able to see the next behavior that needs to be implemented there.

Unfortunately, that's not very easy to parallelize between multiple people. Feel free to write a test on the VM for the functionality you'd like to implement. If you're comfortable implementing it as well, that's great, otherwise a pull request to discuss how it might work is more than welcome. :)

Some great things to work on include:

  • more builtin classes and methods (e.g.: String, Array, Hash, Enumerable methods)
  • raising and rescuing from exceptions
  • finding edge cases in the parser (using grubby with existing gems would be quite helpful)

If you're not sure where to start, opening up an issue or pull request with failing tests is also fine. :)

Contributors

grubby's People

Contributors

tjarratt avatar butzopower avatar jfoley avatar kachick avatar slawosz avatar misfo 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.