NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #855 most downloaded on PyPI
A refreshing functional take on deep learning, compatible with your favorite libraries
Last release 6 months ago
23 Mar 2026
Release timing varies
gaps range from 1 weeks to 7 months
Nearly every release is documented
notes for 57 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
12 years old
250 releases · first in 2014
Nothing published for this version
Nothing published for this version
Nothing published for this version
Relax version range of plac to match spaCy.
One column per quarter.
plac to match spaCy.Add Mish activation. Use via the thinc.v2v.Mish layer, which computes f(X) = mish(W @ X + b). CUDA and Cython kernels are included to make the activat
thinc.v2v.Mish layer, which computes f(X) = mish(W @ X + b). CUDA and Cython kernels are included to make the activation efficient.use_radam to True. In preliminary testing, it's a small change that's worth enabling.lookahead_k to a positive integer. In preliminary testing, it helps if you're not using parameter averaging, but with averaging it's a bit worse.use_lars to True. In preliminary testing, this hasn't worked well at all – possibly our implementation is broken.Big thanks to @digantamisra98 for the Mish activation, especially the extensive experiments and simple gradient calculation. We expect to be using the activation in the next round of spaCy models.
Gratitude to the fast.ai community for their crowd-sourced experiments, and especially to users @LessW2020, @MGrankin and others for their optimizer implementations, which we referenced heavily when implementing the optimizers for Thinc. More importantly, it's super helpful to have a community filtering the deluge of papers for techniques that work on a few different datasets. This thread on optimization research was particularly helpful.
Nothing published for this version
Ditch thinc_gpu_ops for simpler GPU install.
thinc_gpu_ops for simpler GPU install.ExtractWindow nW>=2.thinc_gpu_ops for simpler GPU install.Thanks to @rupsaijna and @KoichiYasuoka for the pull requests!
Nothing published for this version
Use collections.abc when possible and avoid deprecation warning.
preshed v3.0.0, which includes some bug fixes when items are deleted from the table, and also features Bloom filters.collections.abc when possible and avoid deprecation warning.Thanks to @hervenicol for the pull request!
Support read-only numpy arrays, by specifying const in Cython memory-view types. Read-only arrays are helpful for shared-memory multiprocessing, e.g.
Support read-only numpy arrays, by specifying const in Cython memory-view types. Read-only arrays are helpful for shared-memory multiprocessing, e.g. from Apache Arrow's Plasma object store.
Update to cython-blis v0.4, which supports non-x86_64 CPU architectures. For wide (but slow) support, you can specify the environment variable BLIS_ARCH=generic before installing.
Nothing published for this version
## 🔴 Bug fixes * Fix version number for PyPi.
Avoid allocating a negative shape for ngrams.
Thanks to @svlandeg for the pull request!
Fix regression in LinearModel class introduced in v7.0.5.
LinearModel class introduced in v7.0.5.Fix issue #98: Fix syntax error in CPickle import.
CPickle import.HashEmbed results inconsistent across runs.LinearModel.Model instances in child threads with operator overloading.Thanks to @giannisdaras, @simonhkswan, @chssch and @svlandeg for the pull requests and contributions.
Nothing published for this version
## 🔴 Bug fixes * Don't require thinc_gpu_ops.
thinc_gpu_ops.Nothing published for this version
Fix incorrect calculation of min_density in thinc.search.Beam class. Previously the beam was pruned based on the raw logit scores, instead of normaliz
min_density in thinc.search.Beam class. Previously the beam was pruned based on the raw logit scores, instead of normalized probabilities.Fix regression in thinc.linear.LinearModel class.
thinc.linear.LinearModel class.Fix import errors introduced when dropping dependencies in v7.0.0.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Thinc v7.0 drops support for Python 2.7 on Windows. Python 2.7 remains supported on Linux and OSX. Support could be restored in future. We're currentl
blis, for Windows on Python 2.7. If you can assist with this, please let us know.Use blis for matrix multiplication. Previous versions delegated matrix multiplication to platform-specific libraries via numpy. This led to inconsistent results, especially around multi-threading. We now provide a standalone package, with the Blis linear algebra routines. Importantly, we've built Blis to be single-threaded. This makes it much easier to do efficient inference, as the library will no longer spawn threads underneath you.
Use srsly for serialization. We now provide a single package with forks of our preferred serialisation libraries – specifically, msgpack, ujson and cloudpickle. This allows us to provide a single binary wheel for these dependencies, and to maintain better control of our dependency tree, preventing breakages.
Update versions of cymem, preshed and murmurhash. Thinc is compiled against our memory pool and hash table libraries, cymem and preshed. Changing these build-time dependencies requires Thinc to be recompiled. This is one reason the major version number needed to be incremented for this release.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix issue explosion/spaCy#2995: Pin msgpack to version <0.6.0, to avoid the low message-length limit introduced in v0.6.0, which breaks spaCy. We will
msgpack to version <0.6.0, to avoid the low message-length limit introduced in v0.6.0, which breaks spaCy. We will relax the pin once spaCy is updated to set the max_xx_len argument to msgpack.dumps()Update dependencies to be able to provide binary wheels.
thinc_gpu_ops.pip install thinc[cuda92].murmurhash pin to accept newer version.Nothing published for this version
Nothing published for this version
You can now require GPU capability using the pip "extras" syntax. Thinc also now expects CUDA to be installed at /usr/local/cuda by default. If you've
You can now require GPU capability using the pip "extras" syntax. Thinc also now expects CUDA to be installed at /usr/local/cuda by default. If you've installed it elsewhere, you can specify the location with the CUDA_HOME environment variable. Once Thinc is able to find CUDA, you can tell pip to install Thinc with cupy, as follows:
thinc[cuda]: Install cupy from source (compatible with a range of cuda versions)thinc[cuda80]: Install the cupy-cuda80 wheelthinc[cuda90]: Install the cupy-cuda90 wheelthinc[cuda91]: Install the cupy-cuda91 wheelIf you're installing Thinc from a local wheel file, the syntax for adding an "extras" specifier is a bit unintuitive. The trick is to make the file path into a URL, so you can use an #egg clause, as follows:
pip install file://path/to/wheel#egg=thinc[cuda]
Nothing published for this version
Thinc now vendorizes OpenBLAS's cblas_sgemm function, and delegates matrix multiplications to it by default. The provided function is single-threaded,
cblas_sgemm function, and delegates matrix multiplications to it by default. The provided function is single-threaded, making it easy to call Thinc from multiple processes. The default sgemm function can be overridden using the THINC_BLAS environment variable --- see below.thinc.neural.util.get_ops now understands device integers, e.g. 0 for GPU 0, as well as strings like "cpu" and "cupy".StaticVectors model, to make use of spaCy v2.0's Vectors class..gemm() method on NumpyOps and CupyOps classes, allowing matrix and vector multiplication to be handled with a simple function. Example usage:Customizing the matrix multiplication backend
Previous versions of Thinc have relied on numpy for matrix multiplications. When numpy is installed via wheel using pip (the default), numpy will usually be linked against a suboptimal matrix multiplication kernel. This made it difficult to ensure that Thinc was well optimized for the target machine.
To fix this, Thinc now provides its own matrix multiplications, by bundling the source code for OpenBLAS's sgemm kernel within the library. To change the default BLAS library, you can specify an environment variable, giving the location of the shared library you want to link against:
THINC_BLAS=/opt/openblas/lib/libopenblas.so pip install thinc --no-cache-dir --no-binary
export LD_LIBRARY_PATH=/opt/openblas/lib
# On OSX:
# export DYLD_LIBRARY_PATH=/opt/openblas/lib
If you want to link against the Intel MKL instead of OpenBLAS, the easiest way is to install Miniconda. For instance, if you installed miniconda to `/opt/miniconda', the command to install Thinc linked against MKL would be:
THINC_BLAS=/opt/miniconda/numpy-mkl/lib/libmkl_rt.so pip install thinc --no-cache-dir --no-binary
export LD_LIBRARY_PATH=/opt/miniconda/numpy-mkl/lib
# On OSX:
# export DYLD_LIBRARY_PATH=/opt/miniconda/numpy-mkl/lib
If the library file ends in a .a extension, it is linked statically; if it ends in .so, it's linked dynamically. Make sure you have the directory on your LD_LIBRARY_PATH at runtime if you use the dynamic linking.
FeatureExtracter class.drop=None. Previously, layers such as BatchNorm relied on having their predict() method called, which didn't work they were called by layers which didn't implement a predict() method. We now set drop=None to make this more reliable.FeatureExtracter.Thanks to @dvsrepo, @justindujardin, @alephmelo and @darkdreamingdan for the pull requests and contributions.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Update cytoolz version pin to make Thinc compatible with Python 3.7.
cytoolz version pin to make Thinc compatible with Python 3.7.pathlib backport on Python 2 (see #69).msgpack instead of msgpack-python.termcolor dependency.Your coding agent can read these notes before it upgrades. Set up the MCP server →