Metadata-Version: 2.4
Name: cysignals
Version: 1.13.0
Summary: Interrupt and signal handling for Cython
Author-Email: The Sage Developers <sage-support@googlegroups.com>
License-Expression: LGPL-3.0-or-later
License-File: LICENSE
Classifier: Development Status :: 6 - Mature
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: C
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Free Threading :: 1 - Unstable
Classifier: Topic :: System
Classifier: Topic :: Software Development :: Debuggers
Project-URL: Homepage, https://github.com/sagemath/cysignals
Requires-Python: >=3.13
Description-Content-Type: text/x-rst

cysignals: interrupt and signal handling for Cython
===================================================

.. image:: https://readthedocs.org/projects/cysignals/badge/?version=latest
    :target: https://cysignals.readthedocs.org

Cython and interrupts
---------------------

When writing `Cython <http://cython.org/>`_ code, special care must be
taken to ensure that the code can be interrupted with ``CTRL-C``.
Since Cython optimizes for speed, Cython normally does not check for
interrupts. For example, code like the following cannot be interrupted
in Cython::

    while True:
        pass

The ``cysignals`` package provides mechanisms to handle interrupts (and other
signals and errors) in Cython code.

Requirements
------------

- Python >= 3.13
- Cython >= 3.1
- Sphinx >= 1.6 (for building the documentation)

Links
-----

* cysignals on the Python package index: https://pypi.org/project/cysignals/
* cysignals code repository and issue tracker on GitHub: https://github.com/sagemath/cysignals
* full cysignals documentation on Read the Docs: http://cysignals.readthedocs.io/

Changelog
---------

1.13.0 (2026-09-28)
^^^^^^^^^^^^^^^^^^^

support Python 3.14t and Python 3.15, support arm64 Linux and Windows, improve CI

1.12.6 (2025-10-29)
^^^^^^^^^^^^^^^^^^^

support Python 3.14, drop old versions support, fix PyPI deployment

1.12.0 (release candidate)
^^^^^^^^^^^^^^^^^^^^^^^^^^

* Remove optional compile-time dependency on PARI/GP. [#166]


1.11.4 (2023-10-07)
^^^^^^^^^^^^^^^^^^^

* Include generated `configure` script in the sdist again.


1.11.3 (2023-10-04)
^^^^^^^^^^^^^^^^^^^

* Add support for Cython 3. [#174, #176, #182, #187]
* Add support for Python 3.12.
* Replace `fprintf` by calls to `write`, which is async-signal-safe according to POSIX. [#162]
* Introduce a general hook to interface with custom signal handling. [#181]


1.11.2 (2021-12-15)
^^^^^^^^^^^^^^^^^^^

* Drop assembly code added after 1.10.3 that is not portable.


1.11.0 (2021-11-26)
^^^^^^^^^^^^^^^^^^^

* Drop Python 2 support; bump minimum Python version to 3.6. [#142]
* Fixed compilation with glib 3.34. [#151]
* Improved testing. [#139, #152, #154]


1.10.3 (2021-03-16)
^^^^^^^^^^^^^^^^^^^

* Improved installation of cysignals with ``pip install -e``. [#130]

* Fixed compilation of OpenMP modules that also use cysignals. [#128]

* Fixed segmentation fault that could occur when ``sig_occurred()`` is
  called recursively during garbage collection. [#127]

* Improved error reporting of signals that occurred inside ``sig_on()`` as
  opposed to outside them.

* Fixed bug in the ``cysignals_example`` package. [#113]

For changes in previous releases, see the best source available is to
compare git tags: https://github.com/sagemath/cysignals/tags
