Version française
Home     About     Download     Resources     Contact us    
Browse thread
Bug in ocamlyacc
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Martin Jambon <martin.jambon@e...>
Subject: new+old Camlp4 (was Re: [Caml-list] Bug in ocamlyacc)
On Wed, 25 Apr 2007, skaller wrote:

> On Tue, 2007-04-24 at 12:23 +0200, Diego Olivier FERNANDEZ PONS wrote:
> > Bonjour,
> >
> > > I won't use Menhir for that reason either.[...]
> >
> > Come on, Skaller. You know as well as everyone that adding a tool that
> > is not mature enough to the standard distribution is a bad idea.
>
> Not if it is optional, like the ocamlbuild tool for example.
>
> > Mehnir is clearly the "official" candidate for replacement of
> > CamlYacc, without yet being mandatory. This gives you the time to
> > port, criticize and ask for improvements. Look the mess that happened
> > with CamlP4 which didn't follow this pattern.
>
> There do indeed appear to be some issues with camlp4.
> However what was done was the 'right thing' despite that --
> IMHO of course.
>
> First: few would have tested it, given the incompatibilities,
> it it were not forced onto the market.
>
> Second: Ocaml 3.10 is still in beta, and the author(s) of
> camlp4 *needed* the feedback and participation from the community.
>
> Third: the community wanted a better camlp4: this is the price,
> and I believe most people using camlp4 are willing to help
> and get it working.

I wanted to start this as dedicated thread, but let's do it now.
The current situation with camlp4 3.10-beta is terrible. Not
because the new camlp4 is not good or anything, but because it is not
compatible with the old one and yet replaces it. Replacing the old one by
the new one in the next release of OCaml is practically unmanageable
because:

1) Source duplication is unavoidable
2) Upgrading to the new camlp4 is not automatic

The direct consequences are that it will take time until all syntax
extensions support camlp4/ocaml 3.10, and probably anything new will work
with either ocaml 3.09 or 3.10, but not both.

I started upgrading some of my non-trivial syntax extensions already. It's
ok to translate a file once, but I'll be adding new features and I don't
know if I should continue to support ocaml 3.09 or ocaml 3.10. Even though
I want to support both, I can't because it takes twice the time and it's
pretty boring.

A smooth transition would be much preferrable. I acknowledge that I don't
know how make it possible to use syntax extensions using the old and the
new camlp4 on a same ocaml source file, but for those using only one
extension or several extensions using the same version of camlp4, it would
be convenient if it just works.

It could go like "the old camlp4 is deprecated, and support will be
dropped completely [one year after the first stable-and-documented release
of camlp4 3.10]"

* It means two versions of camlp4 would be distributed and installed with
  ocaml 3.10.
* Command names for the new camlp4 would be distinct from the old camlp4.
* Old programs would still compile and work without having to patch
  makefiles.
* Upgraded programs could add new features only to the 3.10 version, while
  maintaining minimal support (bug fixes) for the 3.09 version, without
  forcing the camlp4 programmer to use ocaml 3.09 for testing.
* New programs could support only the new camlp4.

Does that make sense?

Camlp4 is such a great tool, it would be sad to loose some users just
because of compatibility uncertainties.



Martin

--
Martin Jambon
http://martin.jambon.free.fr