Dear Shahriar,

 

If I understand correctly, symjit is similar to sympy.lambdify(….) but faster?

 

I found this on Anaconda’s website:



So I could install like this and it will install the dependencies? I have 
windows.

 

Thanks a lot!

 

Peter

From: [email protected] <[email protected]> On Behalf Of Shahriar 
Iravanian
Sent: Friday, April 11, 2025 9:49 PM
To: [email protected]
Subject: Re: [sympy] symjit

 

The latest version of symjit (1.5.0) has just been published. By now, the Rust 
backend is stabilized and generates code on Linus/Darwin/Windows and x86-64 and 
arm64 machines. 

 

Symjit also has a new plain Python-based backend, which depends only on the 
Python standard library and numpy (the numpy dependency is not strictly 
necessary) but can generate and run machine code routines. Currently, the 
Python backend is used as a backup in cases where the compiled Rust code is 
unavailable. However, it already works very well with a minimum performance 
drop compared to the Rust backend. 

 

I would like to have your suggestions and recommendations about the next steps. 
I hope to add features that align with the maintainers' goals for sympy. Some 
possibilities:

 

1. Expanding on the current focus on numerical computation and 
numpy/scipy/matplotlib inter-operability, for example, adding other data types 
besides double (single floats, complex numbers...).

 

2. Fast polynomial evaluation, not only for floating point types, but also over 
Z, Zp, and Q. The Python-only backend can be tightly coupled to the polynomial 
subsystem. However, I don't know how useful having such a fast polynomial 
evaluation function is, but, for example, it may be useful in the combinatorial 
phase of the Zassenhaus algorithm. On the other hand, it seems that sympy 
pivots toward using Flint for many such computations. 

 

3. A different area would be the Satisfiability module, where writing fast 
SAT/SMT solver, with or without interfacing with Z3 or other solvers, is 
possible. 

 

Thanks,

 

Shahriar Iravanian

 

 


 


 

On Thu, Feb 20, 2025 at 10:54 PM Jason Moore <[email protected] 
<mailto:[email protected]> > wrote:

Dear Shahrari,

 

We have already debugged everything and merged the PR to conda forge:

 

https://github.com/conda-forge/staged-recipes/pull/29211

 

You can install symjit with:

 

conda install -c conda-forge symjit

 

Enjoy!

 

Jason

moorepants.info <http://moorepants.info> 
+01 530-601-9791

 

 

On Fri, Feb 21, 2025 at 1:24 AM Shahriar Iravanian <[email protected] 
<mailto:[email protected]> > wrote:

Hi Jason,

 

Thanks for your help. I got conda-forge working. You can install symjit on 
Windows and Linux (Mac will be coming soon). 

 

Here is the meta.yaml that works:

 

```

{% set name = "symjit" %}
{% set version = "1.2.1" %}

package:
  name: {{ name|lower }}
  version: {{ version }}

source:
  url: https://pypi.org/packages/source/{{ 
<https://pypi.org/packages/source/%7B%7B>  name[0] }}/{{ name }}/symjit-{{ 
version }}.tar.gz
  sha256: 8398ceb11d557c5b5bdce4e7d358b741d2d5278d1e374588f5bd6bbb5a581ebd

build:
  noarch: python
  script: {{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation
  number: 0

requirements:
  build:    
    - {{ compiler('rust') }}
    - {{ compiler('c') }}
    - {{ stdlib('c') }}
  host:
    - python >=3.7
    - setuptools
    - setuptools-rust
    - pip
  run:
    - python >=3.7  
    - numpy
    - sympy
    - libgcc
    
test:
  imports:
    - symjit
  commands:
    - pip check
  requires:
    - pip

about:
  home: https://github.com/siravan/symjit
  summary: a light-weight jit for sympy expressions
  license: MIT
  license_file: LICENSE

extra:
  recipe-maintainers:
    - shahriariravanian

```

 

On Thu, Feb 20, 2025 at 10:35 AM Jason Moore <[email protected] 
<mailto:[email protected]> > wrote:

Hi,

 

The way conda forge works is that it starts from a source distribution and 
compiles the code using their toolchain (they have a rust toolchain). This 
generates conda binaries, not wheels.

 

So, to get it to build there on conda forge we have to debug any Rust 
compilation or Rust->Setuptools/python issues. Right now, it is not compiling 
for Linux or Mac and it does compile on Windows, but it doesn't seem to run the 
test file. So something is not quite right. If you have tips to fix the build 
issues, you can post to that PR and we can eventually get it built for 
distribution on conda forge.

 

Jason

moorepants.info <http://moorepants.info> 
+01 530-601-9791

 

 

On Thu, Feb 20, 2025 at 3:21 PM Shahriar Iravanian <[email protected] 
<mailto:[email protected]> > wrote:

Hi,

 

I’m using setuptools. I should try conda next.

 

Currently, it comes with binaries for Windows, linux x86-64 (built on ubuntu), 
and raspbian linux (aarch64). No Mac yet. I will try to compile it on a Mac.

 

In the long run, it might be easier to rewrite it in pure python with hardware 
dependencies confined to the mmap module.

 

Shahriar

 

 

 

 

 

On Thu, Feb 20, 2025 at 7:50 AM Jason Moore <[email protected] 
<mailto:[email protected]> > wrote:

Dear Shahriar,

 

I opened a PR to package symjit for conda here: 
https://github.com/conda-forge/staged-recipes/pull/29211

 

I've never tried building any rust packages. There are a couple issues, but 
maybe it has to do with conda-forge. I'm not sure. If you have any tips you can 
comment there.

 

I much prefer the name "compile_func" over lambdify.

 

Jason

moorepants.info <http://moorepants.info> 
+01 530-601-9791

 

 

On Thu, Feb 20, 2025 at 12:48 PM Shahriar Iravanian <[email protected] 
<mailto:[email protected]> > wrote:

Thanks a lot. Yes, I meant https://www.sympy.org/en/index.html. I will send a 
PR.

 

Regarding the name, I was thinking about a variation of lambdify but couldn't 
come up with one, so I went with compile_func. 

 

-- Shahriar

 

On Wed, Feb 19, 2025 at 11:05 PM Jason Moore <[email protected] 
<mailto:[email protected]> > wrote:

Yes, this looks interesting, especially that you choose a sane function name 
"compile_func". We should have named lambdify that.

 

Jason

moorepants.info <http://moorepants.info> 
+01 530-601-9791

 

 

On Wed, Feb 19, 2025 at 11:41 PM Oscar Benjamin <[email protected] 
<mailto:[email protected]> > wrote:

Hi Shahriar,

The symjit package sounds very interesting. I will have to take a look at it.

I'm not sure what the list of packages you are referring to is.
Presumably a PR to the website can add this?

https://github.com/sympy/sympy.github.com

Oscar

On Wed, 19 Feb 2025 at 22:14, Shahriar Iravanian <[email protected] 
<mailto:[email protected]> > wrote:
>
> Could you please add symjit (https://github.com/siravan/symjit) to the list 
> of SymPy projects?
>
> Symjit is a lightweight just-in-time (JIT) compiler that directly translates 
> basic sympy expressions into x86-64 and aarch64 machine codes (and, 
> optionally, to WebAssembly). Currently, its main utility is to generate fast 
> numerical functions to feed into different numerical solvers (quadrature, ode 
> solvers...). It has minimum dependency on external libraries and does not use 
> a separate compiler, such as LLVM. It also works very well in the REPL 
> environment.
>
> In addition, if anyone is interested in collaborating to improve and extend 
> it, please contact me. There are many possibilities for future works, such as 
> adding modular arithmetic for fast polynomial computations, adding complex 
> numbers, SIMD instructions, and other instruction sets.
>
> Thanks,
>
> -- Shahriar
>
> --
> 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] 
> <mailto:sympy%[email protected]> .
> To view this discussion visit 
> https://groups.google.com/d/msgid/sympy/7468597d-a73a-4aa6-ae0c-c0dd04105cb5n%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] 
<mailto:sympy%[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CAHVvXxSYPmF-OkevB3Xz%2BqDYQ04XP9TcYiqdnxNBXguDJrxWMA%40mail.gmail.com.

-- 
You received this message because you are subscribed to a topic in the Google 
Groups "sympy" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/sympy/TBGpgEYtnWw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
[email protected] <mailto:[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CAP7f1AgM_3x0yi0oc7EvXy0us5moRWHqV6L5T9jRiFTmAiPmVQ%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CAP7f1AgM_3x0yi0oc7EvXy0us5moRWHqV6L5T9jRiFTmAiPmVQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
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] 
<mailto:[email protected]> .

To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CABEBXTbWzaEK%3DfZHEvzMPxWUsWfjHpgJmu-zChv_F9KzEXSiWQ%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CABEBXTbWzaEK%3DfZHEvzMPxWUsWfjHpgJmu-zChv_F9KzEXSiWQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
You received this message because you are subscribed to a topic in the Google 
Groups "sympy" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/sympy/TBGpgEYtnWw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
[email protected] <mailto:[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CAP7f1Aj%3DmVXjzsBgAmMYTxKtDhUnpsKFDrFBK%3DbbjWUQq81Szg%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CAP7f1Aj%3DmVXjzsBgAmMYTxKtDhUnpsKFDrFBK%3DbbjWUQq81Szg%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
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] 
<mailto:[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CABEBXTYFckqvBhiNM-_7zzta5pesqRJVLgSUBTNTX57skCzw0A%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CABEBXTYFckqvBhiNM-_7zzta5pesqRJVLgSUBTNTX57skCzw0A%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
You received this message because you are subscribed to a topic in the Google 
Groups "sympy" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/sympy/TBGpgEYtnWw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
[email protected] <mailto:[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CAP7f1AjVCwUV7jWwSLZW8NQr0uCPBrdDshDfMCtoT5e1wnYzDQ%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CAP7f1AjVCwUV7jWwSLZW8NQr0uCPBrdDshDfMCtoT5e1wnYzDQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
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] 
<mailto:[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CABEBXTZZeqR1Sm_8n2wQ-e_498ATUWdKOk%3DHveRCvf85wjkZhw%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CABEBXTZZeqR1Sm_8n2wQ-e_498ATUWdKOk%3DHveRCvf85wjkZhw%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
You received this message because you are subscribed to a topic in the Google 
Groups "sympy" group.
To unsubscribe from this topic, visit 
https://groups.google.com/d/topic/sympy/TBGpgEYtnWw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to 
[email protected] <mailto:[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CAP7f1AgBRGPgGk%3DMQ57FE7MiPRmurH2zcCaVcry-72QrRDdbdA%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CAP7f1AgBRGPgGk%3DMQ57FE7MiPRmurH2zcCaVcry-72QrRDdbdA%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
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] 
<mailto:[email protected]> .
To view this discussion visit 
https://groups.google.com/d/msgid/sympy/CABEBXTbrbNhHLM1ttQ31ighR4qdyOwYhAFbRX8s6Pm%3D%2BfPD%2Bew%40mail.gmail.com
 
<https://groups.google.com/d/msgid/sympy/CABEBXTbrbNhHLM1ttQ31ighR4qdyOwYhAFbRX8s6Pm%3D%2BfPD%2Bew%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .

-- 
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 visit 
https://groups.google.com/d/msgid/sympy/000701dbab6b%241b293f60%24517bbe20%24%40gmail.com.

Reply via email to