Roadmap

From sygnm
Jump to: navigation, search

This page documents the current state of sygnm development and future goals.

Notation

  • Green: done
  • Yellow: in progress
  • Red: not started yet

1.0alpha3

  • general
    • use the new logo everywhere
    • prepare for wrapping linalg and poly libs, research other mathematical libraries

1.0.0alpha2

  • general
    • sygnm-examples, tutorials
    • Ubuntu 17.10 packages
    • improve package documentation, make it available online
    • tests: newAdder = \(x) \(y) x+y in let addTwo = \(y) y+newAdder(2)(y) in addTwo(3)) == 8, newAdder = \(x) \(y) x+y in let addTwo = \(x) x+newAdder(2)(x) in addTwo(3)) == 8
    • clang
  • core
    • $(==,a,b), $(+,a,b)
    • std::experimental::filesystem -> std::filesystem (see namespace.cpp) + header (<filesystem>)
    • Better name for call, call2
    • boost::locale::dgettext, boost::locale::format
    • node: has_children, has_*, property_size, get_single_propery_val
    • remove enable_threading, no_dependencies
    • remove acquire_all_from etc.
    • investigate automatic type conversion, inline function impls.?
    • newtype aliases (integer->natural)
    • sygnm_properties, node_vector
    • remove deprecated functionality from core (attachments, starred typeclass sets, etc.)
    • finish node properties api
    • recursive functions in evaluator, less cloning during evaluation
    • check for required config. variables, built-in config. profiles
    • remove core.translations_path, use data path
  • packages
    • property: inplace
    • wrap remaining functions from GMP
    • system package (with version/license info/list of loaded packages/package contents,is_computer_on)
    • add structural equality to eq
    • example package
    • quit
    • numeval package
    • finish number types and typeclasses
    • numbers:functions to get value of UWORD_MAX, WORD_MIN, WORD_MAX, other numerical limits
    • more number types
    • infinity type
    • "real constant" type
    • arb
    • fmpz_extras
    • acb_hypgeom
    • arb_hypgeom
    • acb_elliptic
    • hypgeom
    • bernoulli
    • partitions
    • finish GeNuSys support
    • acb
    • arith
    • ulong_extras
    • long_extras
    • fmpq
    • fmpz
    • FlintQS
    • qsieve
    • fmpz_factor

1.0.0alpha1

  • general
    • no unnecessary compile warnings
    • update version number
    • add error identifiers to all error messages
    • better handling of empty configuration variables
    • AUR packages, virtual machine build script working, demo server
    • all clients and Python/C++ API working
  • core
    • core documentation (on wiki)
    • option to match only full IDs in parameters (see order::greater_or_equal)
    • typeclass implementation parameter constraints
    • tree matching/rewriting
  • sygnm-codegen
    • vector variants for autogenerated functions, fix handling of starred parameters
    • use clone_helper instead of clone
    • %pythonbegin to import dependencies
  • packages
    • unit tests for all packages
    • add precision_error to numbers package
    • sql query builder
    • copy documentation from wiki to core_docs
    • minimal documentation for all packages
    • handle special function names in default_renderer
    • packages: latex_io, rewriter, ranges, eval
    • add function "apply" to package "functional" (for testing callable)

1.0.0

  • general
    • Haiku OS port
    • C API
    • clang build (waiting for better C++17 support in clang)
  • core
    • automatically detect correct package load order
    • automatic package discovery
    • serialization
    • add figures to documentation
    • alternative names for CALL ($ and others)
    • typeclass aliases
    • expand core documentation
    • use C++17 features (optional, variant, filesystem,constructor template parameter deduction, string_view, maybe_unused, etc.)
  • sygnm-codegen
    • better parameter list specification format
    • typeclass aliases
    • commutative functions
    • add missing implementation stubs to .cpp files
    • detect missing function implementations, missing tests, missing documentation
  • packages
    • correct handling of empty polys & matrices
    • get_free_var_name
    • list package
    • set package
    • units package
    • error: flag type for common errors (?)
    • error: warnings
    • GeNuSys
    • add missing functions to alpha1 packages
    • better mixed rational support (matrix, poly, etc.)
    • generic matrix/polynomial algorithms
    • multivariate polynomials
    • more polynomial specializations
    • more matrix/vector specializations
    • sparse matrix, vector, poly
    • poly/matrix/vector specializations for machine precision types
    • doc: show help for typeclass implementations and tree transformations
  • packages/symbolic
    • decide on list of symbolic manipulation features for rel. 1.0
    • exact values for basic functions
    • basic symbolic manipulation (subst,rhs,lhs,etc.)
    • integration
    • differentiation
    • simplification
  • packages/Arb wrapper
    • arb_poly
    • acb_poly
    • arb_mat
    • acb_mat
    • dirichlet
    • acb_dirichlet
    • arb_calc
    • acb_calc
    • bool_mat
  • packages/FLINT wrapper
    • fmpz_vec
    • fmpz_mat
    • fmpz_poly
    • fmpz_poly_factor
    • fmpq_mat
    • fmpq_poly
    • fmpz_poly_q
    • fmpz_poly_mat
    • nmod_vec
    • nmod_poly
    • nmod_poly_factor
    • nmod_mat
    • nmod_poly_mat
    • fmpz_mod_poly
    • fmpz_mod_poly_factor
    • fq
    • fq_vec
    • fq_mat
    • fq_poly
    • fq_poly_factor
    • fq_nmod
    • fq_nmod_vec
    • fq_nmod_mat
    • fq_nmod_poly
    • fq_nmod_poly_factor
    • acb_modular
    • fq_zech
    • fq_zech_vec
    • fq_zech_mat
    • fq_zech_poly
    • fq_zech_poly_factor
    • padic
    • padic_mat
    • padic_poly
    • qadic
    • fft
    • perm