Xavierbot - an OCaml toplevel for IRC


About Xavierbot

<rwmjones> let hello () = print_endline "hello, world";;
<xavierbot> val hello : unit -> unit = <fun>
<rwmjones> hello ();;
<xavierbot> hello, world
<xavierbot> - : unit = ()

Xavierbot is an OCaml toplevel which connects to an IRC session. This is a teaching tool to allow people learning OCaml and their teachers to cooperate in an IRC chat session, trying out different OCaml commands with a shared toplevel.

It is moderately secure (or at least, the best efforts of OCaml hackers everywhere have failed so far to find any way to subvert it). It doesn't allow access to the local filesystem. It uses Unix rlimits to prevent infinite loops or using too much memory. And it disables dangerous OCaml features such as the external directive, Obj.magic, unsafe String functions, and so on.

However it only has limited flood protection so it is possible for people to instruct it to flood itself off the channel (it won't reconnect). This is intentional -- the security is there to protect the machine running xavierbot from corruption, not to keep connected to the channel at all costs.

It supports some limited commands (do: xavierbot help to find them), and can be told to go to sleep, restart the toplevel and a few other things.


The original idea came from Revence Kalibwani. Thanks to all the people on #ocaml (IRC channel on freenode.net) who helped out with testing.

Basic requirements

For the rest, please read the enclosed README file.

rjones AT redhat DOT com

$Id: index.html,v 1.5 2010/04/04 19:42:00 rjones Exp $