The PCRE maintainers have started a discussion about a revised API (something 
that has been pending for a while) and I'd like to ask the community for 
opinions on one particular point. But first, some background:

The current API dates from 1997 when I first implemented PCRE. It has proved 
robust enough to last 16 years, with mostly compatible extensions. However, 
there are some issues that cannot be fixed compatibly. There are also some 
untidinesses in the code that it would be nice to fix.

We are proposing to design a new API that makes no attempt at compatibility, 
but will hopefully be extensible enough to last for a long time, and at the 
same time tidy up rough edges in the code. There are two possible ways of 
releasing a new API, and this is where we would like some consumer feedback.

1. Release an entirely new library (let's call it NPCRE for now). This would be 
   completely separate from the existing library. Once the new library was 
   released, the old library would not be enhanced, and only security-critical 
   bugs would be fixed.
   
2. Release a library that somehow supports both APIs, probably with some kind
   of "wrapper" that converts the old API to the new one. This should be 
   possible at least for the most common uses of PCRE, but it may not be 
   possible to implement an absolutely complete mapping.
   
The advantage of NPCRE is that the old library remains available unchanged for 
existing code, and if bugs have to be fixed, this can be done without affecting 
the new library. The disadvantage is the existence of two libraries, probably 
for a very long time.

The advantage of 2 is that there is only one library to think about. The 
disadvantage is that maintaining the old API has to be continually considered, 
and this may tempt applications to stick with the old API (we would, of course, 
like them to upgrade). Another disadvantage is that having both APIs available 
could lead to bugs in programs that mix them up by mistake.

Whatever approach is taken, it is certain that applications using the old API 
will be around for a very long time. This is something we just have to live 
with. It is not without precedent: see Python 2/3, GTK 1/2, etc.

SO: What do people think about 1 and 2 above?

Philip

-- 
Philip Hazel

-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to