Hi,

After patch296, darcs now can compile and actually run with type witnesses enabled (previously you could build a binary, but some code was just conditionally compiled into error calls).

So, the path to using witnesses as standard is now open. The question is whether we should follow it and if so when.

The following tasks are still outstanding with witnesses:

(A) Convert the test suite to use witnesses. I'm working on this but it'll take a while longer.

(B) Produce better documentation of witnesses - the overall rationale, how to deal with common errors, and also haddock for specific bits of witness code. I ought to do this, I guess...

And I think the following are possible steps we might want to take to use witnesses:

(1) Enable witnesses by default for the darcs executable
- There's some risk of a performance impact; we'd need to measure to be sure there isn't one.

- Makes life harder for some people, particularly newbies, in writing darcs code, in the sense that you can't easily separate the job of writing the code from the job of sorting out the witnesses - though we could
perhaps recommend turning off witnesses temporarily if wanted.

(2) Enable witnesses by default for the darcs library
+ Stops client authors shooting themselves in the foot. A classic is filtering a list of patches (which will normally work out but occasionally produce broken patches.) - Makes life harder for client authors in terms of having to deal with witnesses
 - Disruptive to existing clients (but this gets worse the longer we wait)
- Risk of performance impact as with executable - but perhaps less bad for library users.

(3) Remove the conditional compilation and make witnesses always-on
 + Get rid of the ugly CPP
 - Removes the option of turning off witnesses temporarily

There's no particular order to them except that (3) requires (A) and we'd also probably want to have done (1) and (2) for a time first.

The immediate question, of course, is what we should do for 2.5, but I think the arguments above apply at whatever time, the only question is of the relative balance between urgency and risk.

Thoughts?

Ganesh

_______________________________________________
darcs-users mailing list
darcs-users@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to