Summary
skainet-io-core builds every native target (iosArm64, iosSimulatorArm64, macosArm64, linuxX64,
linuxArm64) but not androidNativeArm32 / androidNativeArm64, which blocks on-device
(Android/edge NPU — 32-bit ARM SoCs, arm64 phones) consumers that need engine tokenizers
(TokenizerFactory, SentencePieceTokenizer, byte-level BPE decode).
Why it's trivial
- The native
RandomAccessSource actual is PosixPreadRandomAccessSource (posix pread) in a
shared nativeMain — androidNative supports posix pread.
commonMain deps are only skainet-lang-core (already androidNative) + kotlinx
(io-core / coroutines / serialization-json — all androidNative-capable).
So the targets just need declaring; no new actuals.
Verification
./gradlew :skainet-io:skainet-io-core:compileKotlinAndroidNativeArm64 and …Arm32 compile clean.
Not included
skainet-io-safetensors also lacks androidNative but additionally depends on
skainet-compile-core / skainet-compile-dag (not androidNative), so it needs a separate,
larger effort. On-device weight loading for compiled models bakes weights into the vmfb, so
io-core (tokenizer decode) is the piece actually needed on device.
Summary
skainet-io-corebuilds every native target (iosArm64, iosSimulatorArm64, macosArm64, linuxX64,linuxArm64) but not
androidNativeArm32/androidNativeArm64, which blocks on-device(Android/edge NPU — 32-bit ARM SoCs, arm64 phones) consumers that need engine tokenizers
(
TokenizerFactory,SentencePieceTokenizer, byte-level BPE decode).Why it's trivial
RandomAccessSourceactual isPosixPreadRandomAccessSource(posixpread) in ashared
nativeMain— androidNative supports posixpread.commonMaindeps are onlyskainet-lang-core(already androidNative) + kotlinx(io-core / coroutines / serialization-json — all androidNative-capable).
So the targets just need declaring; no new
actuals.Verification
./gradlew :skainet-io:skainet-io-core:compileKotlinAndroidNativeArm64and…Arm32compile clean.Not included
skainet-io-safetensorsalso lacks androidNative but additionally depends onskainet-compile-core/skainet-compile-dag(not androidNative), so it needs a separate,larger effort. On-device weight loading for compiled models bakes weights into the vmfb, so
io-core (tokenizer decode) is the piece actually needed on device.