Repository navigation
Conversation
github-actions
Bot
force-pushed
the
release
branch
18 times, most recently
from
October 3, 2026 17:04
7c42aae to
d9ec535
Compare
…es/ removed (#108) KSP consumers under python-multiplatform-ksp/fixtures, artifact-walker consumers under python-multiplatform-gradle-plugin/fixtures (root-build projects, the plugin being an included build), Compose host consumers under python-multiplatform-compose/fixtures. Tests unchanged except the derived module-name strings that follow the new project paths.
Refactor: Fixtures live inside the modules they test; root ksp-fixtures/ removed
github-actions
Bot
force-pushed
the
release
branch
from
October 3, 2026 19:32
d9ec535 to
f3ad209
Compare
…ttings binary/ held eleven CPython 3.13.0 archives (547 MB) that no build step reads; CPython is fetched by Gradle. .claude/settings.json is per-machine Claude Code configuration; it is now ignored and stays on disk.
Chore: Remove unreferenced binary/ and stop tracking local .claude settings
github-actions
Bot
force-pushed
the
release
branch
from
October 3, 2026 20:08
f3ad209 to
ed57258
Compare
Docs: SPEC N-7b, type gate at import in development mode
github-actions
Bot
force-pushed
the
release
branch
from
October 3, 2026 20:27
ed57258 to
4b233a9
Compare
…el backend decision (#185) INTENT 1.5 promotes kernels from exploration to commitment. Design 5 now says: tile-first with SIMT fallback, our own IR shaped to map onto MLIR, emitters per target with MSL emitted directly, the MLIR wheel as an optional build-time helper, torchnative's device layer as the runtime and wgpu for the web only. The two investigations behind it are recorded under docs/investigations.
Docs: TypedPython commits to GPU kernels and CPU SIMD (#185)
github-actions
Bot
force-pushed
the
release
branch
from
October 4, 2026 06:25
4b233a9 to
3c05103
Compare
Build: one published version for library, KSP and plugin (#70)
…ework and stdlib staging (#90) On a module with Kotlin/Native iOS targets the plugin registers downloadPython_ios (the pinned iOS support archive, into the consumer's build/ only, verified against a SHA-256 baked in from python-checksums.properties; a mismatch fails the build), preparePythonXcframework (Sync into build/xcode-frameworks plus -framework Python -F<slice> on every iOS framework binary and the link dependency; pythonBindings { ios { linkPythonFramework.set(false) } } turns it off), stageIosPythonHome_<slice> / stageIosPythonHome / stageIosPythonHomeForXcode (the library's names and stdout contract), and installPythonXcodeScript (install-python.sh with the consumer's task baked in). fixtures/ios-consumer builds a simulator app from the plugin alone and probes stdlib, an extension module and the payload from the bundle.
Plugin: consumer iOS wiring (Python.xcframework + stdlib staging) (#90)
… compare by Kotlin object identity (#322) The walker binds Owner.<Companion> as a STATIC_GETTER whose generated Kotlin names the companion (kotlinc emits GETSTATIC), typed as Owner when the companion directly implements it, and exempt from the rule that drops a constructor beside an Owner.x key. A proxy class falls back to its same-named module's statics, and one Python name stays one thing: the proxy class wins over a module of the same name unless a declaration of that name is bound in the parent (#78's callable module), in the adapter and in PythonProxySource. Proxies are == when they hold the same Kotlin object (identity hash; is not guaranteed; Kotlin equals is not used). register_empty also takes the proxy class and a Python callable. Stubs render the handle as a class attribute.
Binder: companion objects as values; proxy identity equality (#322)
…itting an unresolved call (#319) Kotlin cannot name a root-package declaration from a named package, and every generated fragment lives in one: a public top-level function with no package produced 'Unresolved reference' and broke the consumer's compile. The processor now warns, naming the declaration and the fix (add a package), and skips it.
KSP: skip root-package declarations with a warning (#319)
…on its parent (#323) When the import system creates pkg.Owner through the finder it binds the module onto pkg after the loader returns, shadowing the proxy class pkg.Owner (a companion makes Owner both). The parent's module type now guards __setattr__ with class_wins_over_module, in the adapter and in PythonProxySource's per-module types, so the class stays and its __getattr__ serves the module's statics; 'import pkg.Owner as M' binds the class. Reads are unchanged.
…-keeps-class Binder: explicit submodule import keeps the proxy class (#323)
…cate stdlib-staging tasks are removed (#321) sample drops its own Python.xcframework Sync and -framework Python linker options (the plugin's preparePythonXcframework does both) and its Xcode phase runs :sample:installPythonXcodeScript and the installed script. python-multiplatform's stageIosPythonHome* tasks had no user left and are removed; its downloadPython_ios stays (the library's cinterop and iOS tests use it). install-python.sh carries a placeholder the install task bakes, and a raw run without PYTHON_HOME_TASK stops with a message instead of calling a task that no longer exists.
Build: sample iOS via the plugin; remove the library's duplicate staging (#321)
…Main metadata compiles again (#329) pthread_mutex_init is not in the POSIX surface Kotlin/Native commonizes across Apple and Linux, so compileNativeMainKotlinMetadata (which publishing runs) failed although every per-target compile passed. The critical sections are a few array operations and never call Python, so a CAS spin lock is bounded.
Fix: commonizable PlatformMutex on native (#329)
…ub collisions, inherited overload sets in stubs TypedPython CI: vd was assigned only under __APPLE__, so GCC rejected it as unused (#296); it is now declared in that branch. Kotlin-name stubs: a companion handle typed as its own type stays a type path (no attribute that mypy reads as a variable), and an owner-typed one is written only when no nested class of that name is rendered, on the class and the module path (#322). A subclass that overrides one overload of an inherited name now renders the full set Kotlin resolution sees, in the supertype's order (CornerBasedShape.copy / createOutline, from #307's foundation.shape walk).
Fix: develop CI red (TypedPython CI, Kotlin-name stubs)
…hisisthepy, apps under io.github.thisisthepy (#95) Maven group io.github.thisisthepy -> org.thisisthepy (library, KSP, compose, Gradle plugin) and plugin ID org.thisisthepy.python.multiplatform.bindings; the sample's application/bundle ID and desktop package move to io.github.thisisthepy.python.multiplatform.demo (namespace too; sample code uses no R or BuildConfig). Code packages stay. Generated fragments, named from group and path, become Fragment_org_thisisthepy_*; SPEC L-0 records it. A recorded log line in the GraalVM verification note keeps its old name.
…hepy Build: org.thisisthepy coordinates, io.github.thisisthepy app IDs (#95)
…attempt On the macOS CI runner one baseline measurement did not predict the next call's length, so every timer landed after the call and the test failed without any defect. Each of up to 12 attempts now measures first. A mutant without the region field-read guard still fails it.
…obust Test: robust timing in the region signal-handler test
… interpreter on change (#152, option i) A function holding a list copy-in or entry globals no longer starves other threads, signals and the free-threaded stop-the-world for the length of its loops. From the second TP_POLL_INTERVAL chunk on it writes its lists back, ends their critical section, polls, re-takes it, copies in again and re-checks lengths, exact element types and entry globals. Unchanged: it continues compiled. Changed: an OSR-style exit. The frontend generates, per loop, a Python continuation from the function's own source (resume.py: the rest of the function from that iteration, enclosing loops via a first-iteration flag, range bounds as evaluated, original lines and name); the impl boxes every live local and calls it, and the call returns what it returns. The wrapper hands the context to its impl through tp_tls so only that call polls with those lists. Functions whose locals cannot all be handed over (virtual objects, regions) keep the no-poll rule.
TypedPython: OSR-style exit for snapshot holders (#152, option i)
…rray.tobytes() tobytes() is a memcpy that may copy byte-wise and tear an element itself, so the test could report a torn element the compiled stores never wrote (Linux CI on 52f641a). The interpreter's a[i] is one aligned 8-byte load, which is the access the SPEC compares compiled element access with.
Test: per-element reader in the torn-element buffer test
…using it (#161 option B) withGIL's and withPython's blocks become crossinline (a public API change, user-approved) so the outermost scope on a virtual thread can run inside a native frame: C's bsearch over one element calls its comparator, an FFM upcall that runs the scope, so the virtual thread cannot unmount between PyGILState_Ensure and Release. The result or exception is carried out of the upcall. Platform threads, Android, native and wasm run the block directly. Panama gains the (long, long) -> int upcall shape; its reachability descriptor is generated from the @UpcallShape marker.
Binder: pin virtual threads in withGIL; crossinline block (#161 option B)
On a v* tag (or by hand for an existing tag) desktop-release.yml assembles, on macOS, a Maven repository zip (library desktop artifact with every desktop libpython, KSP processor and gate zip, Gradle plugin and marker; built with -Dmaven.repo.local, never ~/.m2), the typedpython wheel, the gate zip, an examples zip and SHA256SUMS; runs both examples from those assets alone (a Kotlin app calling Python, and typedpython demo); and only then creates or updates the pre-release. Nothing goes to Maven Central. The tag must equal v<pythonVersion>-<libraryVersionSuffix>.
CI: desktop preview GitHub Release (no Maven), with examples
The owner abolished the .tmp/ rule on 2026-10-26.
Docs: temp files in scratchpad or .cache/, not .tmp/
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.
Automated sync of
develop(f366e37) intorelease. Markdown outside README.md and docs/ subfolders is removed by .github/scripts/release/sync-release.sh.