The PRM Project

Rethink Object-Oriented Programming
# Refinement of the class of integers: adding a new method.
class Int
    def fibonacci: Int
    do
        if self < 2 then
            return 1
        else
            return (self-1).fibonacci + (self-2).fibonacci
        end
    end
end

let i := 23
print(i.fibonacci)

What is PRM?

PRM stands for "Program with Refinement and Modules". It is an object-oriented programming language. The goal of PRM is to propose a statically typed programming language where structure is not a pain.

Feature Highlights

  • Full object and powerful multiple inheritance
  • Modules and Refinement: redefine existing classes
  • Clear syntax: no verbosity nor cryptic statement
  • Painless static types: static typing should help programmers
  • More features...

Compiler

The current PRM compiler prototype implements better compilation techniques and allow separate compilation of modules.

It is currently written in Ruby and generates C and assembly files.

Getting Started

Get PRM from its subversion repository:

$ svn checkout http://svn.gna.org/svn/prm/trunk prm

Compile a program:

$ prm/bin/prmc prm/tests/example_hello_world.prm

Execute the program:

$ ./example_hello_world

Participate

PRM is a target framework for novel compilation techniques and object-oriented research. Currently, the compiler and others tools are actively developed in order to reach fully usable state.

The PRM project is hosted at Gna!. Fell free to report bugs, browse the source code or discuss on the mailing list.

Warning

The PRM language specification is currently unstable. Some large pieces of change may occur.

The prmc compiler is currently a prototype.

Main page

You may want to know more about the PRM language and its compiler and tools.

Download

Previous PRM releases are to much outdated, instead use the subversion repository.

Documentation

The PRM language reference(PDF) is about language syntax classes and modules. The standard library references built-ins and standard classes. For more details, see publications and technical reports.

Contact

PRM is developed at LIRMM by Jean Privat. The dedicated mailing list is prm@lirmm.fr, more infos.

Sponsors

PRM is supported by LIRMM, Université Montpellier II, CNRS, Région Languedoc-Roussillon.