Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] ANN OCaml Batteries Included alpha 1

3 views
Skip to first unread message

David Teller

unread,
Oct 11, 2008, 9:48:41 AM10/11/08
to OCaml
Dear list,

We're happy to inform you that the first alpha version of OCaml
Batteries Included has just been released. You may find the source on
the Forge [1], as well as the release notes [2], and you can browse the
documentation online, including a detailed presentation of what OCaml
Batteries Included is all about [3]. A GODI package has also been
uploaded for OCaml 3.10 .

The list of features is a tad too long for detailing it here. Let's just
say that there are new or improved data structures, i/o, unicode ropes,
syntax extensions, primitives for invoking some of the tools of the
toolchain, etc.

It's alpha-level code, so use with caution, and not all the features we
have in mind have been implemented yet. On the other hand, any form of
feedback is greatly appreciated.

[1] http://forge.ocamlcore.org/frs/?group_id=17&release_id=44
[2] http://forge.ocamlcore.org/frs/shownotes.php?release_id=44
[3] http://forge.ocamlcore.org/docman/?group_id=17

Have fun coding,
David

--
David Teller-Rajchenbach
Security of Distributed Systems
http://www.univ-orleans.fr/lifo/Members/David.Teller
Angry researcher: French Universities need reforms, but the LRU act brings liquidations.

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Andrej Bauer

unread,
Oct 11, 2008, 5:27:30 PM10/11/08
to David Teller, OCaml
Very good work! I have a small suggestion: in the instructions on how to
start using the batteries, include a small complete example of a
HelloWorld project which uses batteries (and package it up in a .zip).
This will help people get started. The current instructions presuppose
that the user already has some source code, which is not necessarily the
case.

Best regards,

Andrej

David Teller

unread,
Oct 11, 2008, 6:35:41 PM10/11/08
to Andrej...@andrej.com, OCaml
Thanks for the feedback.
In the .tgz, there's actually a directory called examples, which is
supposed to serve that purpose. We should make it clearer, though.

Cheers,
David

--
David Teller-Rajchenbach
Security of Distributed Systems
http://www.univ-orleans.fr/lifo/Members/David.Teller
Angry researcher: French Universities need reforms, but the LRU act brings liquidations.

_______________________________________________

Peng Zang

unread,
Oct 12, 2008, 1:42:38 AM10/12/08
to caml...@yquem.inria.fr, David Teller, OCaml
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I think Batteries Included is a great idea and have been looking forward to
seeing how it turns out. I've just installed it and have been playing around
with it. A quick question, how do you get batteries to work in the toplevel?
I tried the usual:

# #use "topfind";;
# #require "batteries";;
No such package: bin_prot.syntax - Required by `batteries.bin_prot.syntax'

But I get an error. Attempts to "#require" batteries.bin_prot.syntax yield
similar errors.

This is quite important to me. I don't know what the general sentiment of the
community is, but the toplevel is one of the major reasons I use OCaml. In
fact, for every Makefile I write, I write an equivalent toplevel init file.
This ensures that any code I write in the toplevel, will compile with no
changes and vice versa. Even when making simple edits to compiled code, I
will open up a toplevel, load the library/file and open the correct name
space of where the edit will take place (automated with some elisp of
course). This allows me to test, in the toplevel, each little change I make.

Thanks in advance,

Peng



On Saturday 11 October 2008 09:48:34 am David Teller wrote:
> Dear list,
>
> We're happy to inform you that the first alpha version of OCaml
> Batteries Included has just been released. You may find the source on
> the Forge [1], as well as the release notes [2], and you can browse the
> documentation online, including a detailed presentation of what OCaml
> Batteries Included is all about [3]. A GODI package has also been
> uploaded for OCaml 3.10 .
>
> The list of features is a tad too long for detailing it here. Let's just
> say that there are new or improved data structures, i/o, unicode ropes,
> syntax extensions, primitives for invoking some of the tools of the
> toolchain, etc.
>
> It's alpha-level code, so use with caution, and not all the features we
> have in mind have been implemented yet. On the other hand, any form of
> feedback is greatly appreciated.
>
> [1] http://forge.ocamlcore.org/frs/?group_id=17&release_id=44
> [2] http://forge.ocamlcore.org/frs/shownotes.php?release_id=44
> [3] http://forge.ocamlcore.org/docman/?group_id=17
>
> Have fun coding,
> David

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)

iD8DBQFI8Y4/fIRcEFL/JewRAst2AKCRnKy/uB70LhSBnb/Rvny2EJTKYwCgz+j+
1oNcyf/KdXaQrwOe4dChrlk=
=zMpC
-----END PGP SIGNATURE-----

Jan Kybic

unread,
Oct 12, 2008, 5:20:55 AM10/12/08
to caml...@yquem.inria.fr
> This is quite important to me. I don't know what the general sentiment of the
> community is, but the toplevel is one of the major reasons I use OCaml. In
> fact, for every Makefile I write, I write an equivalent toplevel init file.

Hello. On the subject of using toplevel: I would love to use toplevel
to test my code but I need a lot of compiled libraries (written in C)
- such as FFTW, Lacaml, etc. - and as far as I know, it is not
possible to use compiled code from toplevel. Or am I wrong? Also, some
of my code is quite computationally intensive, so in byte-code it runs
too slowly.

Ideally, I would like to have only the module I am working on in
byte-code, playing with it interactively. All the other (stable)
modules and all the libaries would be a compiled code and the
byte-code and compiled code would seemlessly call each other. Is that
feasible?

Yours,

Jan


--
-------------------------------------------------------------------------
Jan Kybic <ky...@fel.cvut.cz> tel. +420 2 2435 5721
http://cmp.felk.cvut.cz/~kybic ICQ 200569450

Daniel Bünzli

unread,
Oct 12, 2008, 8:54:06 AM10/12/08
to OCaml List

Le 12 oct. 08 ą 11:20, Jan Kybic a écrit :

> Hello. On the subject of using toplevel: I would love to use toplevel
> to test my code but I need a lot of compiled libraries (written in C)
> - such as FFTW, Lacaml, etc. - and as far as I know, it is not
> possible to use compiled code from toplevel. Or am I wrong?

Yes. There's no problem using bindings to C from the toplevel.

> Ideally, I would like to have only the module I am working on in
> byte-code, playing with it interactively. All the other (stable)
> modules and all the libaries would be a compiled code and the
> byte-code and compiled code would seemlessly call each other. Is that
> feasible?

AFAIK this is not possible. You will have to use byte code for
everything except your C code of course.

Daniel

David Teller

unread,
Oct 12, 2008, 9:59:20 AM10/12/08
to peng...@gmail.com, caml...@yquem.inria.fr, OCaml
Hi,

It seems we forgot one dependency in the README: you need Bin-prot to
get Batteries to work. I must confess that we could have removed that
dependency for Alpha 1, as we don't use any feature of Bin-prot yet.

Cheers,
David

--
David Teller-Rajchenbach
Security of Distributed Systems
http://www.univ-orleans.fr/lifo/Members/David.Teller
Angry researcher: French Universities need reforms, but the LRU act brings liquidations.

_______________________________________________

Markus Mottl

unread,
Oct 12, 2008, 11:19:18 AM10/12/08
to Jan Kybic, caml...@yquem.inria.fr
On Sun, Oct 12, 2008 at 5:20 AM, Jan Kybic <ky...@fel.cvut.cz> wrote:
> Hello. On the subject of using toplevel: I would love to use toplevel
> to test my code but I need a lot of compiled libraries (written in C)
> - such as FFTW, Lacaml, etc. - and as far as I know, it is not
> possible to use compiled code from toplevel. Or am I wrong? Also, some
> of my code is quite computationally intensive, so in byte-code it runs
> too slowly.

It is certainly possible to use Lacaml (and presumably also FFTW) in
toplevels. There shouldn't be any noticable performance penalty,
since almost all of the computation time is spent in external
libraries written in Fortran or C.

Regards,
Markus

--
Markus Mottl http://www.ocaml.info markus...@gmail.com

Peng Zang

unread,
Oct 12, 2008, 11:19:45 AM10/12/08
to caml...@yquem.inria.fr, Jan Kybic
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


On Sunday 12 October 2008 05:20:23 am Jan Kybic wrote:
> Also, some
> of my code is quite computationally intensive, so in byte-code it runs
> too slowly.


I run into this problem occasionally as well. My solution has always been to
make the test problem smaller. Eg. I was writing a driving directions
generator (like Mapquest). Testing on the US road network was too slow so I
used the state of New Hampshire. The toplevel helps my development and
testing. Once things look good, then I run on the real stuff with compiled
code.

Peng


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)

iD8DBQFI8hWGfIRcEFL/JewRAiynAJ97SeeYpPKx4K/IE+xCzHnWbzyRogCgkAxu
bw7ze+s3heurBCrjvMQ/qGY=
=dgPP
-----END PGP SIGNATURE-----

Peng Zang

unread,
Oct 12, 2008, 1:00:39 PM10/12/08
to caml...@yquem.inria.fr, David Teller, OCaml
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sunday 12 October 2008 09:59:13 am David Teller wrote:
> Hi,
>
> It seems we forgot one dependency in the README: you need Bin-prot to
> get Batteries to work. I must confess that we could have removed that
> dependency for Alpha 1, as we don't use any feature of Bin-prot yet.
>
> Cheers,
> David


Thanks for your help. Installing Bin-prot has seemed to fix that error.
Unfortunately, now I get a different one. To give some context, I am trying
to create an equivalent toplevel init.ml file that corresponds to the
ocamlbuild _tags file.

To build a project with Batteries all you need is "<*>: use_batteries" in the
_tags file. I don't really use ocamlbuild so I am assuming the _tags file
plays a similar role to your normal Makefile.

My equivalent init.ml file which aims to start an ocamltoplevel in an
environment where any code that compiles will run in the toplevel consists,
so far of:

#use "topfind"
#require "batteries"

The new error is: Reference to undefined global `Ref'

I am not familiar with Ref. It looks like it's a module in Batteries, so I'm
not sure why it's throwing this error. I tried to open Data.Mutable to see
if perhaps things worked despite the warning, but it does not appear to be
so.

Any ideas? I've attached the complete output below for reference.


Thanks in advance,


Peng

Objective Caml version 3.10.2

# #use "topfind";;
- - : unit = ()
[.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
Findlib has been successfully loaded. Additional directives:
#require "package";; to load a package
#list;; to list the available packages
#camlp4o;; to load camlp4 (standard syntax)
#camlp4r;; to load camlp4 (revised syntax)
#predicates "p,q,...";; to set these predicates
Topfind.reset();; to force that packages will be reloaded
#thread;; to enable threads

- - : unit = ()
# #require "batteries";;
/home/peng/app-data/godi-latest/lib/ocaml/std-lib/bigarray.cma: loaded
/home/peng/app-data/godi-latest/lib/ocaml/std-lib/nums.cma: loaded
[.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top: added to search
path
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top/num_top.cma: loaded
[.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num: added to search path
[.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/sexplib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/sexplib: added to search
path
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/sexplib/sexplib.cma: loaded
/home/peng/app-data/godi-latest/lib/ocaml/std-lib/unix.cma: loaded
/home/peng/app-data/godi-latest/lib/ocaml/std-lib/str.cma: loaded
[.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/sexplib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib: added to search
path
[.] [/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/sexplib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4: added to search path
[.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/camomile]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/sexplib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/camomile: added to search
path
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/camomile/camomile.cma:
loaded
[.] [/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/batteries_nothreads]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/camomile]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/sexplib]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/num-top]
[/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/findlib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib]
[/home/peng/app-data/godi-latest/lib/ocaml/std-lib/camlp4]
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/batteries_nothreads: added
to search path
/home/peng/app-data/godi-latest/lib/ocaml/pkg-lib/batteries_nothreads/batteries.cma:
loaded
Reference to undefined global `Ref'
# open Data.Mutable;;
Characters 0-17:
open Data.Mutable;;
^^^^^^^^^^^^^^^^^
Unbound module Data.Mutable
#

iD8DBQFI8i0nfIRcEFL/JewRApnwAKCqPZaijL+32hbQj8DlohKlk4118wCglYim
LCDOwzSBws+IRUIq80ChZQs=
=ieQo

David Teller

unread,
Oct 12, 2008, 2:43:27 PM10/12/08
to peng...@gmail.com, caml...@yquem.inria.fr, OCaml
I can reproduce the error. If you don't mind, let's continue that
discussion on the Batteries-devel mailing-list [1].

Thanks for the bug report,
David

[1]
http://lists.forge.ocamlcore.org/cgi-bin/mailman/listinfo/batteries-devel


On Sun, 2008-10-12 at 13:00 -0400, Peng Zang wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>

--

David Teller-Rajchenbach
Security of Distributed Systems
http://www.univ-orleans.fr/lifo/Members/David.Teller
Angry researcher: French Universities need reforms, but the LRU act
brings liquidations.

_______________________________________________

Peng Zang

unread,
Oct 12, 2008, 2:55:46 PM10/12/08
to caml...@yquem.inria.fr, David Teller, OCaml
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sunday 12 October 2008 02:43:08 pm David Teller wrote:
> I can reproduce the error. If you don't mind, let's continue that
> discussion on the Batteries-devel mailing-list [1].
>
> Thanks for the bug report,
> David
>
> [1]
> http://lists.forge.ocamlcore.org/cgi-bin/mailman/listinfo/batteries-devel
>

Not at all, thank you guys for all your hard work on this. It looks very
cool. I've moved this thread over to batteries-devel.

Peng


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.7 (GNU/Linux)

iD8DBQFI8kgkfIRcEFL/JewRAo6fAJ9pV6wuvvKmwzFdRBOjrticEeLUngCdETzI
qL2RX40JQX9ceO3OGNViUcA=
=CIdw
-----END PGP SIGNATURE-----

Stefano Zacchiroli

unread,
Oct 13, 2008, 5:08:32 AM10/13/08
to OCaml
On Sat, Oct 11, 2008 at 03:48:34PM +0200, David Teller wrote:
> We're happy to inform you that the first alpha version of OCaml
> Batteries Included has just been released.

Wonderful news, thanks!

I've made available the first draft Debian packages of batteries
included, you can find them at
http://people.debian.org/~zack/ocaml-batteries/. More info in this
blog post:
http://upsilon.cc/~zack/blog/posts/2008/10/ocaml_batteries_included_debian_packages/

Cheers.

--
Stefano Zacchiroli -*- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
I'm still an SGML person,this newfangled /\ All one has to do is hit the
XML stuff is so ... simplistic -- Manoj \/ right keys at the right time

Daniel Bünzli

unread,
Oct 13, 2008, 6:26:38 AM10/13/08
to OCaml List

Le 12 oct. 08 à 14:53, Daniel Bünzli a écrit :

> AFAIK this is not possible. You will have to use byte code for
> everything except your C code of course.

But the release notes of the forthcoming 3.11 [1] has this line :
- ocamlnat: an experimental native toplevel (not built by default).
Daniel

[1] http://camlcvs.inria.fr/cgi-bin/cvsweb/~checkout~/ocaml/Changes?
rev=1.183;content-type=text%2Fplain

0 new messages