Keep RPL/2 project alive. Please donate.


on official RPL/2 ® web pages, a programming language designed for scientific computations.

Your goal: improve the portability and facilitate the writing of your numerical algorithms or symbolic computations on parallel calulators.

A simple solution: use RPL/2 language and extensions
  • An functional Turing-equivalent language
  • A compiled language
  • A type-inference language
  • An extensible language

Random screenshoots

Click to enlarge

Click to enlarge


In 1989, I have bought a scientific calculator. It was a Hewlett-Packard 28S, and I was surprised by the power and the potential extensibility of RPL, its programming language. I have started to seek without success a similar language to be able to use this language on a workstation.

I have started the writing of a RPL interpret on a development board with a Rockwell 6502 and 48 little kilobytes of memory. A challenge within sight of the exiguity of the memory, the program complexity and quite relative swiftness of this 8 bits processor.

Happy owner of a Goupil G3 provided with a 8/16 bits 68B09 processor and running with TSC-Flex9 operating system, I have token again most of basic concepts of the program. If this workstation contained 576 KB of memory, a huge quantity, Flex9 used a strange technique to address memory by virtual variables on 64 KB pages. This version was not released for lack of having been able to write a complete editor.

In early 1990's, some new operating systems were available on standard workstations. These new systems allowed new kind of memory management and were shipped with some high level compilers. For some reasons, RPL only used static memory and RPL was inefficient. All evolutions required a huge work.

From 1998, all internal structures have been rewritten to optimize memory management and velocity. RPL is rewritten in C and Fortran and some new features that are not in original RPL have been added. RPL is renamed RPL/2 to distinguish original RPL from mine. Today, this language is designed to write scientific programs on parallel computers.


RPL/2 language is a stack oriented language. It does not have line concept and its training or use can appear difficult.

RPL/2 uses a preprocessor which transforms a command files in another file which will be is interpreted (what allows the use of a internal debugger) or compiled. The source files are plain text files. In the future, it will be possible to obtain an executable file from source file to only distribute executable file.

RPL/2 is based on the calls system described in POSIX 2001 standard. It is able to run on any compatible operating system. Conformity to this standard ensures a good management of the threads and processes in multiprocessors environments.


RPL/2 or Reverse Polish Lisp/2 is a particular language, in the etymological sense of the term, which could be the result of the forbidden loves between Lisp and Forth. It takes in Forth its reversed polish notation and its stack addressing, but keeps only one standardized stack, and in Lisp, the power of its control structures.

This language has a weak typing. Variables are declared on the fly during their first use according to the type of data. Contrary to other languages like the using BASIC that use automatic variables, a variable which was not initialized does not exist. It should be noted that the type of a variable can vary during program execution.


RPL/2 is provided as sources files covered by the CeCILL license version 2.0 of september 5, 2006. It contains softwares that are compatible with its license due to the lack of some libraries on some operating systems.

RPL/2 is a registered trademark and is subject to copyright.

© 2009-2021 BERTRAND Joël