This is the mail archive of the
gsl-discuss@sourceware.org
mailing list for the GSL project.
Re: GSL 2.0 roadmap
- From: Brian Gough <bjg at gnu dot org>
- To: Tuomo Keskitalo <Tuomo dot Keskitalo at iki dot fi>
- Cc: GSL Discuss Mailing List <gsl-discuss at sourceware dot org>
- Date: Fri, 21 Aug 2009 21:41:53 +0100
- Subject: Re: GSL 2.0 roadmap
- References: <48E25CA9.6080306@iki.fi><490DE4BD.7070907@iki.fi><m3y700znqd.wl%bjg@network-theory.co.uk><497B00F6.2080400@iki.fi><m38woqp3je.wl%bjg@network-theory.co.uk><498727E5.6080407@iki.fi><49AA9DB5.6030908@iki.fi><49FB01D1.30000@iki.fi><m3ljp7amw3.wl%bjg@network-theory.co.uk><4A7ADFDC.9080408@iki.fi>
Sorry for the delay in replying. Here's a list of the changes from
the NOTES file and my own org file. I plan to make a branch for
release 2.0 after the next release 1.13 which will hopefully be next
week. The 1.x branch should probably be maintained in parallel with
any bug fixes for a release or two but hopefully those are just minor
things now which we can easily merge.
* Changes for Release 2.0
Break binary compatibility, but keep source compatibility.
** Add a 'void *' to all workspaces, to allow for future changes.
** Disable deprecated functions
** Fix up the workspace_alloc functions so they have consistent names
(add functions where needed, don't remove)
** Standardize function names, in particular VERB vs NOUN (e.g. _invert
vs _inverse). Also adopt a convection for functions which can operate
in place vs use of workspace (e.g linalg_solve functions).
** gsl_sf_ellint_D - remove useless argument n?
** Change default generator to Ranlxd (check seeding) or look at improved seeding for MT
** Vegas struct is too large and control variables should go at the beginning
** Remove use of long double internally, e.g. as an accumulator in
loops. It introduces variation between platforms which is undesirable.
It should be replaced with a preprocessor variable ACC_DOUBLE so
that the user can compile the library with the old long double
behavior if desired.
** Eliminate use of volatile where it has been used to force rounding
(integration/). It is better to write the code to avoid dependence on
rounding.
** Constant objects (like gsl_roots_fsolver_brent) ought to have
constant pointers (const gsl_roots_fsolver_type * const
gsl_roots_fsolver_brent)
** Make the return value EINVAL vs EDOM consistent for invalid
parameters. EDOM means a domain error (i.e. float or mathematically
undefined), EINVAL means invalid (i.e. zero length)
** Change return 0 to return GSL_SUCCESS, and return -1 to GSL_FAILURE
throughout, where appropriate. Similarly change any if(...) checks of
return values to use == GSL_SUCCESS, if they are checking for zero.
N.B. want to be careful about accidentally omitting error conditions
if using something like == GSL_FAILURE when function returns a
different error code.
** Make sure that all #defines are fully wrapped in ()'s, especially
the outermost layer which may have been missed. Everything should be
of the form #define foo(x) (....) so there is no possibility of bad
parsing. Need a perl script to check this!
** Convert to BZR? (check GPG signing and integrity guarantees)
* Release "1.14" backwards compatible
** Add error code to all linalg svx type functions for singular matrix
** Merge integ-glfixed branch
** Fix bug #25383 use GSL_ENOPROG instead of GSL_CONTINUE in lmiterate.c
** compare new erf function
** Export dwt.c/dwt_step
** Fix relative error in integration check