_ _ _
/\ \ /\ \ /\ \
/ \ \ \ \ \ / \ \
/ /\ \ \ /\ \_\ / /\ \ \
/ / /\ \_\ / /\/_/ / / /\ \_\
/ / /_/ / / / / / / / /_/ / /
/ / /__\/ / / / / / / /__\/ /
/ / /_____/ / / / / / /_____/
/ / /\ \ \ ___/ / /__ / / /
/ / / \ \ \/\__\/_/___\/ / /
\/_/ \_\/\/_________/\/_/
Rip is a general purpose programming language. It is a functional language with an object-oriented syntax. All objects are immutable, so it might help to think of objects as collections of partially-applied functions.
In progress. Use at your own risk. Nothing works yet!
Rip is released under the MIT license. Please see LICENSE.markdown for more details.
- no globals (except for a short list of pre-defined references)
- robust object literal syntax for many constructs, including date/time and unit values
- lexical scoping
- type inference
- static name resolution
- tail call optimization
- lazy iteration
- first-class types and lambdas (types and lambdas may be passed around and assigned to references/properties just like any other object)
- multiple inheritance (super types are flattened into a simple list of ancestors when a new type is defined)
- implicit returns from last statement in a block or module
- qualified imports via System.require (uses load path)
- exception handling
- pattern matching
Rip is currently implemented as an interpreter written in Ruby. Likely any recent version will due. Eventually Rip will be implemented as a front-end for LLVM (implemented in itself).
- Download an appropriate prepackaged executable from the release page. 0. If a download isn't available for your platform, try following the contributer instructions below.
- Extract the archive somewhere, like
~/bin/rip
. - The
rip
executable will be in~/bin/rip
, so you'll want to add that directory to your$PATH
. $ rip help
- Install Ruby 2. I use rbenv and ruby-build, but use whatever floats your boat.
0. Rip uses Traveling Ruby to provide all-in-one packages, so you should install the version specified in
.ruby-version
. $ git clone git://github.com/rip-lang/rip.git
$ cd rip
$ bundle install
$ ./bin/rip help
If you find a bug or have any other issue, please open a ticket. You should include as many details as reasonably possible, such as operating system, Ruby version (ruby --version
), the Rip source code that broke et cetera.
Patches are most welcome! Please make changes in a feature branch that merges into master cleanly. Existing tests should not break, and new code needs new tests.