Repository navigation
Conversation
|
paugier
force-pushed
the
exp-spy-wheel
branch
from
October 22, 2026 08:36
9acb938 to
e586bb5
Compare
paugier
force-pushed
the
exp-spy-wheel
branch
from
October 22, 2026 09:13
65e8f54 to
0c1fc6a
Compare
This branch has not been deployed
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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 is an experimental branch depending on #745 and #747. I create this draft PR to better study the changes and see the CI results.
With these changes, we can now build an usable wheel, for example with
uv build --wheel. The wheel is universal and only contains the source files (Python, C and SPy) andi.e. what is necessary for SPy interpreter. Other variants of libspy are built when needed and cached. The cache is located in the user home:
Changes for SPy development
All libspy builds are done via
spy/libspy/builder.py, which uses Ninja (and notmake).uv syncorpip install -e .builds all the standard variants into the cache through a hatchling hook (hatch_build.py), which usesspy/libspy/builder.py.uv syncalways rebuild all libspy build variants.make -C spy/libspyis now just a thin wrapper aroundpython -m spy.libspy.builder.The developer does not need to care about rebuild of libspy. A libspy build variant is rebuilt when needed (when the developer calls a
spycommand orpytest).There is a mechanism to remove the old unnecessary builds from the cache so the cache does not grow infinitely.
There is a new command
spy cache clearto clear the cache.Changes for SPy users (people that want to try SPy locally)
uv tool install spylang --prerelease allowwould install SPy without any compilation.spy build hello.spy,spy build --target wasi hello.spyorspy build --static hello.spyshould work.