In my opinion, we should follow Wolfram Mathematica's design. Define an 
efficient pattern matching core and write the algorithms as transformation 
rules.

We should take up and continue MatchPy and add support for C++ (or Rust) 
pattern matching compilation through code generation.

Remember that Rust is now a valid and more user-friendly alternative to C++ 
when speed and memory efficiency is the issue.
On Sunday, October 13, 2024 at 12:41:05 a.m. UTC+2 Aaron Meurer wrote:

> With modern build distributions like wheels and conda,
> having a compiled dependency isn't really a big deal. Quite a few
> packages are compiled and it isn't a problem. Yes it implies different
> maintenance tasks and requires people who understand how those things
> work, but it can be worth it for the performance gains. The benefit is
> you'd be able to get rid of the pure Python code that does the same
> thing only slower.
>
> The only reason we can't make flint a hard dependency of SymPy is the
> license. If it were relicensed to BSD or MIT I would say we should
> just do it.
>
>
> Aaron Meurer
>
> On Sat, Oct 12, 2024 at 4:32 AM Sangyub Lee <[email protected]> wrote:
> >
> > > Is there some benefit to using Python for everything?
> >
> > Although we use Flint, for instance, they are still left with optional 
> dependency.
> > And there are some reasons behind duplicating some algorithms.
> >
> > C binary distributions are dependent on platforms,
> > for example, X86 and ARM and also dependent on operating systems,
> > but SymPy works at least everywhere where Python interpreter can run,
> > and the distribution of SymPy is much more easier than others.
> >
> > There are benefits of using pure python script, specific for Python 
> users.
> > For example, it is easy to extend SymPy by subclassing, or at least we 
> let users to do by figure out something from the implementation.
> > However, binding with C++ object is not very smooth
> >
> > >>> from symengine import Basic
> > >>> class Foo(Basic):
> > ... pass
> > ...
> > >>> Foo(123)
> > Segmentation fault (core dumped)
> >
> > On Tuesday, October 8, 2024 at 10:22:39 PM UTC+2 Oscar wrote:
> >>
> >> If you pip install python-flint then it will be used to make some
> >> things in SymPy faster. Compare e.g. this with python-flint installed
> >> vs not installed:
> >>
> >> In [2]: %time p = Poly(x + 1)**1000
> >> CPU times: user 202 ms, sys: 88 μs, total: 202 ms
> >> Wall time: 200 ms
> >>
> >> In [3]: %time r = p.factor_list()
> >> CPU times: user 42.6 s, sys: 3.9 ms, total: 42.6 s
> >> Wall time: 42.6 s
> >>
> >> With python-flint:
> >>
> >> In [3]: %time p = Poly(x + 1)**1000
> >> CPU times: user 1.99 ms, sys: 172 μs, total: 2.17 ms
> >> Wall time: 2.19 ms # 100x faster
> >>
> >> In [4]: %time r = p.factor_list()
> >> CPU times: user 35.1 ms, sys: 0 ns, total: 35.1 ms
> >> Wall time: 35.1 ms # 1000x faster
> >>
> >> This is the result of using python-flint which wraps the FLINT library:
> >>
> >> https://python-flint.readthedocs.io/en/latest/
> >> https://flintlib.org/
> >>
> >> This is still a work in progress. I expect that the next SymPy release
> >> will use python-FLINT for multivariate polynomials which will make a
> >> more noticeable difference and will mean that it is used for
> >> polynomial domain elements and therefore many matrix operations as
> >> well.
> >>
> >> The initial PR for multivariate polynomials does not have any actual
> >> content in it yet:
> >>
> >> https://github.com/sympy/sympy/pull/26793
> >>
> >> A lot of upstream progress has happened though:
> >>
> >> https://github.com/flintlib/python-flint/pull/132
> >> https://github.com/flintlib/python-flint/pull/164
> >> https://github.com/flintlib/python-flint/pull/190
> >> https://github.com/flintlib/python-flint/pull/191
> >> https://github.com/flintlib/python-flint/pull/192
> >> https://github.com/flintlib/python-flint/pull/216
> >> https://github.com/flintlib/python-flint/pull/225
> >>
> >> There are many more features in FLINT and python-flint that are not
> >> yet used in SymPy as well that can speed up all sorts of things like
> >> Arb to speed up evalf and so on.
> >>
> >> --
> >> Oscar
> >>
> >> On Tue, 8 Oct 2024 at 20:33, Jason Moore <[email protected]> wrote:
> >> >
> >> > Dear Tilo,
> >> >
> >> > This has been attempted several times throughout the history of 
> SymPy, some with more success than others:
> >> >
> >> > https://github.com/pearu/sympycore
> >> >
> >> > https://github.com/certik/sympyx
> >> >
> >> > https://github.com/symengine/symengine
> >> >
> >> > https://github.com/oscarbenjamin/rust_protosym
> >> >
> >> >
> >> > Jason
> >> > moorepants.info
> >> > +01 530-601-9791 <(530)%20601-9791>
> >> >
> >> >
> >> > On Tue, Oct 8, 2024 at 5:41 PM Tilo RC <[email protected]> wrote:
> >> >>
> >> >> Hi all,
> >> >>
> >> >> Just out of curiosity I was wondering if core functionality of SymPy 
> could be implemented in C/C++ or some other fast language. I would imagine 
> this would greatly improve speed.
> >> >>
> >> >> Is there some benefit to using Python for everything?
> >> >>
> >> >> Sincerely,
> >> >>
> >> >> Tilo
> >> >>
> >> >> --
> >> >> You received this message because you are subscribed to the Google 
> Groups "sympy" group.
> >> >> To unsubscribe from this group and stop receiving emails from it, 
> send an email to [email protected].
> >> >> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/a8389e50-818c-4011-8018-597f6b3db6b0n%40googlegroups.com
> .
> >> >
> >> > --
> >> > You received this message because you are subscribed to the Google 
> Groups "sympy" group.
> >> > To unsubscribe from this group and stop receiving emails from it, 
> send an email to [email protected].
> >> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/CAP7f1AjzMvJrj40cwOOLeF%2BQSo0gM87dBWjhzxRhki29JL_Jhg%40mail.gmail.com
> .
> >
> > --
> > You received this message because you are subscribed to the Google 
> Groups "sympy" group.
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to [email protected].
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/a04525d6-6900-469f-8dcf-7f9726fc9c83n%40googlegroups.com
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/5ea3ea42-f4c5-4bf4-8f6e-cc8322b2530cn%40googlegroups.com.

Reply via email to