Skip to content

Revision plans for v4.0 #4

@akabe

Description

@akabe

We plan to the following changes in the next major version up.

Backward incompatible changes

  • Low-level internal representation of flags. (The flags are defined as polymorphic variant in ver 3 or below, but will be implemented as char because BLAS/LAPACK's flags are characters. Overhead of conversion from polymorphic variant into char will be removed.)
    • The type of parameters ?up (for symmetric or triangular matrices) is bool in ver 3, [< A | L | U ] Slap.Common.uplo` in ver 4.
    • The type of parameters ?diag (for unit or non-unit triangular matrices) is [ N | U ] in ver 3, Slap.Common.diag in ver 4.
    • The type of parameter uplo of lacpy is [ L | U ] option in ver 3, [< A | L | U ] Slap.Common.uplo` in ver 4.
  • Changing subtyping tricks by phantom types. (The current version uses a subtyping trick for flags, vectors, matrices described at our paper, but polymorphic variant can achieve subtyping more simply. We will adopt the latter.)
    • The types of flags in Slap.Common, and 'cnt_or_dsc parameters of vectors and matrices will be changed.
  • Simplification of type parameters of Slap.Common.trans. ((('m, 'n, 'cnt_or_dsc) mat -> ('n, 'm, 'cnt_or_dsc) mat) trans is too long since it has extra type parameter 'cnt_or_dsc. (m * 'n -> 'n * 'm) trans is much simpler.)
    • The type of transpose flags in Slap.Common and parameters ~trans will be changed.
  • Deprecation of several functions.
    • Slap.Size.pred_dyn |-> Slap.Size.pred
    • Slap.Size.fold_left |-> Slap.Size.iter_acc
    • etc.

Backward compatible changes

Perhaps some changes will be contained in ver 4.1 or above.

  • Removing extra dynamic checks.
    • BLAS/LAPACK functions will be slightly faster.
    • -noassert option will be supported by the configure script.
  • Introduction of generative existential types by GADTs.
    • More lightweight syntax can be used.
  • Dynamic checks of equalility/inequality of type-level sizes.
    • E.g., if_eq : 'n Size.t -> 'm Size.t -> (('n, 'm) eq -> 'a) -> (unit -> 'a) -> 'a
  • More utility functions: cons, hd, tl, etc.
  • More LAPACK functions: laswp, lapmt, gtsv
  • Sized array module.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions