Repository navigation
chore: 🚢 release v0.2.0 - #62
Merged
Merged
Conversation
PasteurBot
requested review from
apaleyes,
dionhaefner and
jpbrodrick89
as code owners
September 21, 2026 19:22
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #62 +/- ##
=======================================
Coverage 90.30% 90.30%
=======================================
Files 2 2
Lines 361 361
Branches 66 66
=======================================
Hits 326 326
Misses 12 12
Partials 23 23 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
dionhaefner
approved these changes
Oct 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the generated changelog for the release v0.1.1.
To specify additional release notes, please edit this comment after the following line.
Action required
New minimum versions
tesseract-torch now requires:
Upgrading tesseract-torch with pip or uv pulls in the new tesseract-core automatically. On an older Python version, the resolver keeps you on tesseract-torch 0.1.0.
Highlights
Batching with
torch.vmapapply_tesseractnow works insidetorch.vmap. Choose how the batch reaches the Tesseract with the newvmap_methodkeyword:"sequential"calls the Tesseract once per batch element and works with any schema. Start here if you are unsure."expand_dims"and"broadcast_all"call the Tesseract once with a leading batch dimension. The schema must accept it (e.g.Array[..., Float64]).None(the default) raises insidetorch.vmap, as before.Reverse and forward mode both work through batched calls.
torch.func.grad,jacrevandjacfwdare still not supported. Insidetorch.vmap, non-differentiable array outputs come back as tensors rather than NumPy arrays. See the new "Batching withtorch.vmap" docs page for the exact rules.CUDA tensors stay on the GPU (experimental)
When you pass CUDA tensors and the Tesseract offers a working GPU transport, the tensors are now handed over on the device instead of being copied through the host. Outputs come back as CUDA tensors. To use it, serve the Tesseract with
cuda_ipc:The Tesseract object decides the transport:
gpu_transport="cuda_ipc"(viafrom_source,from_image, orfrom_tesseract_api) uses it, and the call raises if the transport does not work from your process.Tesseract.from_urlclient usescuda_ipcif the server offers it and it works. Otherwise the call falls back to the host with a one-time warning.tess.with_encoding(gpu_transport="none")always copies through the host.Things to know:
cuda_ipcmust run tesseract-core 1.15 or newer, so rebuild older images. It must also be served with a single worker.from_tesseract_api(..., gpu_transport="cuda_ipc"), endpoints receive the caller's CUDA tensors directly and must not modify them in place.See the new "CUDA tensors" docs page for details.
Gradients for dict- and list-valued differentiable fields
Fields typed
dict[str, Differentiable[...]]orlist[Differentiable[...]]now get gradients on both inputs and outputs. In 0.1.0, a dict-valued differentiable input next to other differentiable inputs silently got no gradient. If you used such schemas, re-check your results.Other changes
apply_tesseract, and batched backward (jacobian(..., vectorize=True),is_grads_batched=True). First-order gradients taken withcreate_graph=Truestill work..,{,}or\work in differentiable fields.tesseract-core[runtime]extra installed.