26 Commits

Author SHA1 Message Date
Daniel Larraz
4e7922ee32 Use MSYS2 CLANG64 to compile on Windows x86_64 (#12291)
This PR replaces the MSYS2 MINGW64 environment with the CLANG64
environment for compiling cvc5 natively on Windows x86_64. The main
difference between the two is that MINGW64 uses GCC and links against
libstdc++ and the MSVCRT runtime, whereas CLANG64 uses Clang and links
against libc++ and the UCRT runtime (see the MSYS2 [environment
documentation](https://www.msys2.org/docs/environments/) for details).

This ensures compatibility for statically linking cvc5 with Lean
binaries that use libc++ on Windows x86_64, thus facilitating the
integration of cvc5 into
[lean-cvc5](https://github.com/abdoo8080/lean-cvc5).

---------

Co-authored-by: Abdalrhman Mohamed <abdoo8080@outlook.com>
2025-12-09 00:18:23 +00:00
Daniel Larraz
e0ec61e050 Add support for compilation on Windows ARM64 (#12111)
This PR applies several changes required to compile cvc5 on Windows
ARM64 using MSYS2 CLANGARM64. In particular, `thread_local` class fields
and local function variables in classes and functions exported in the
API are not allowed, so they have been converted into global variables
within the compilation unit. Moreover, some functions in the cvc5 parser
library were using non-exported functions from the cvc5 base library.
This PR exports these functions and converts the ones that were inlined
into non-inlined functions to make them exportable.

Here is a summary of the results of running the cvc5 version in main and
in this branch:
```
config   status   total  solved     sat   unsat    best  timeout  memout  error  uniq  dis    time_cpu      memory 
main     ee      450474  385375  173928  211447  256627    57617     719      5    36    0  18909500.3  42742499.9 
pr       ee      450474  385370  173923  211447  192564    57621     720      5    31    0  18914388.1  42779989.7 
``` 
It seems that the Windows ARM64 changes do not significantly affect
solver performance compared to the main branch.
2025-09-10 15:44:59 +00:00
Aina Niemetz
5ebc7e2bbc python api: Reintroduce deprecated constructor for SymbolManager. (#11062)
Co-authored-by: Daniel Larraz <daniel-larraz@users.noreply.github.com>
2024-07-18 20:29:15 +00:00
Daniel Larraz
0cf3c1b1ac cmake: Specify installation component names (#11055)
This allows users to install the Python or Java bindings independently
from the rest of the components.
2024-07-17 06:55:07 +00:00
Aina Niemetz
55b0458eac docs: cpp: Add missing entries and some fixes. (#11035) 2024-07-12 16:17:06 +00:00
Aina Niemetz
441ef12d70 docs: Fixes in API documentation. (#11034) 2024-07-12 16:16:47 +00:00
Daniel Larraz
7746a9117d Update Python API documentation (#10995)
Resolves #10288. Requires #10994.
2024-07-08 17:29:10 +00:00
Daniel Larraz
49296865b9 Install Python dependencies automatically in venv (#10700)
This creates a Python virtual environment and installs the Python dependencies in it if they are not already present.
2024-05-06 14:32:58 +00:00
Andrew V. Teylu
da91f0d166 Setup Python 'requirement.txt' files for building and Python development (#10315)
I always forget what packages I need to install inside of a venv to build cvc5. This PR adds two requirements.txt files:

    requirements_build.txt for the Python packages you need to install to build cvc5
    requirements_python_dev.txt for the Python packages you need to build cvc5's Python bindings

Signed-off-by: Andrew V. Teylu andrew@tey.lu
2024-02-06 22:23:01 +00:00
Daniel Larraz
6ddc616009 Minor fixes in Python API doc (#10281)
Recommend installing cython as a pip package
Use standard double quotation marks
2024-01-17 12:48:06 -06:00
yoni206
941a842004 fix parallel compilation instructions for python API on mac (#10202) 2023-12-07 21:11:54 +00:00
Jerry James
e45b2891d8 Use tomllib or tomli instead of toml (#9913)
The toml module does not support the latest TOML standard and has not released a new version since 2020. This PR moves from toml to tomli for python < 3.11.0. For 3.11.0 and later, python ships with a tomllib module, based on tomli.

Signed-off-by: Jerry James <loganjerry@gmail.com>
2023-07-27 16:47:26 +00:00
Mathias Preiner
b9dcf8883d docs: Document pyparsing dependency. (#9639) 2023-03-30 11:23:25 -07:00
yoni206
b314d8d5c5 Add dependencies information for python bindings installation on M1/M2 (#9289) 2023-03-07 18:14:28 -08:00
yoni206
b383a0c995 Docs for installing python API in M1 (#9176)
Adds documentation instructions for the python API on M1 MacOS.
2022-10-13 15:32:49 +00:00
Mathias Preiner
e434fdd15b docs: Add Python installation instructions for pip. (#8538) 2022-04-02 02:26:33 +00:00
Alex Ozdemir
082ffeaffc Rename python APIs (#7950)
Rename python APIs to "base" and "pythonic"
2022-01-14 21:45:19 +00:00
Gereon Kremer
881464ade1 Turn kinds in python API into a proper Enum (#7686)
This PR does multiple things:
- the kinds are changed from custom objects to a proper enum.Enum class
  (including according changes to the cython code and the kind generation scripts)
- all examples and tests are modified to account for the change how to use kinds
  (Kind instead of kinds)
- add docstrings to the kind enum values
- add a custom documenter that properly renders enums via autodoc
- extend doxygen setup so that we can write comments as rst (allowing us to copy
  the documentation for kinds from the cpp api to the other apis)
2021-12-08 04:16:03 +00:00
Gereon Kremer
21b15a0464 Add documentation for z3py compatibility API (#7652)
This PR includes documentation for the z3py compatibility API into our general API.
It does so by adding the z3py compatibility API as an external project to download it and then have sphinx document it via the autodoc extension that we already use for our regular python API.
Right now we simply show everything on one page, which should be refactored in the future.
2021-11-17 19:40:49 +00:00
Gereon Kremer
5cfbb67e22 Various minor docs improvements (#7626)
This PR does a number of minor improvements to the docs.
2021-11-12 02:27:53 +00:00
yoni206
cd5fb80d86 Python api documentation for sorts (#7440)
This PR adds documentation for the Sort python API.
2021-10-27 17:41:24 +00:00
yoni206
538eea94a5 Python api documentation: Op, Grammar, Result, Enums (#7095)
This PR adds documentation to the python class Op, Grammar, Result, and for API enums.
Additionally, documentation for isNull functions in the datatype classes is added for the python API, and a small change in the cpp API documentation is introduced.
2021-10-15 23:09:02 +00:00
Alex Ozdemir
41b0ff8aa9 Start python API Solver documentation (#7064) 2021-09-20 22:12:17 +00:00
yoni206
be403c18c6 python docs for Datatype-related classes (#7058) 2021-08-30 12:32:24 -07:00
yoni206
63ad6f0ce1 Add python quick start guide (#7024) 2021-08-19 23:32:57 +00:00