Sunday, May 17, 2009

The Pyjama Project and PyjamaScheme

The Pyjama project is an open source sub-project run by the Institute for Personal Robots in Education, which is partly funded by Microsoft Research.
The Pyjama Project is a framework for computing. At its core is an integrated editor and interactive console for writing and exploring computer science through dynamic languages. It is designed to be a simple, yet powerful, integrated development environment (IDE) for students, teachers, researchers, and regular humans, too. It runs on most any operating system, including Linux, Mac OS X, and Windows, and is built using .NET and Mono. All sources for the Pyjama Project are open and free---freely available and you are free to use them in various ways. All source code conforms to OSI approved licenses.

Pyjama is built using the Dynamic Language Runtime (DLR) system from Microsoft. This means that languages (such as Python and Ruby) can share data and use a set of common libraries. For example, rather than writing a library for Python, one can write one library (in a portable way) and it will be usable from Python, Ruby, or any of a number of languages without making any changes. Generally, any .NET/Mono library can be turned into a dynamically loaded module for any DLR language. Pyjama was initially designed to control robots interactively, but it can be used for many tasks.

Pyjama is currently under development. It contains many components:
  • Myro - library and infrastructure for controlling robots
  • Editor - simple, but powerful customizable editor
  • Shell - integrated languages
  • Graphics - 2D and 3D
Other Libraries - including neural networks, music, and art
Pyjama is planned to be ready to sample Summer 2009.
The PyjamaDevelopment Page has a screenshot of the IDE so far and instructions for building for Mono or on Windows with Visual Studio Express. It says this of the languages you can use for developing for Pyjama:
The Pyjama interface is written in C#. This will allow any of the .NET/Mono Languages (IronPython, IronRuby, PyjamaScheme, JavaScript, F#, J#, etc) to use the API.
PyjamaScheme is a new language being developed for the project. As far as I can tell it isn't yet a DLR based language, but this is the intention for the future:
Pyjama Scheme is a new implementation of a Scheme-based language for .NET/Mono. It implements many core Scheme functions, but also adds some functionality to bring it into line with the other modern languages like Python and Ruby. The goal is to have a complete environment for teaching, called Pyjama.
Pyjama Scheme is actually written in Scheme. It is written in a special form (continuation-passing style) and then automatically converted through a series of transformations, into C# so that it can be run on .NET/Mono. The generated language could be any language, but for this project we chose Scheme (because we need a Scheme for Pyjama).

Pyjama Scheme is currently under development. Plans:
  1. get a basic scheme working in .NET/Mono [done]
  2. use the Dynamic Language Runtime (DLR) for environments
  3. integrate it with the rest of the DLR
Pyjama Scheme is not a regular scheme and is not meant to be compatible with others. It is designed for education and research.

1 comment:

  1. a pity it uses the same name as another popular python project.

    http://pyjs.org/
    'pyjamas is a stand-alone python to javascript compiler'

    ReplyDelete

Note: only a member of this blog may post a comment.