github PerryTS/perry v0.2.183

latest releases: v0.5.1182, v0.5.1181, v0.5.1180...
3 months ago

What's New

perry run command

Compile and launch in one step — auto-detects entry file (perry.toml, src/main.ts, main.ts), platform-aware device detection (iOS simulators via simctl, devices via devicectl, Android via adb), interactive prompts when multiple targets found, forwards program args via --.

Remote build fallback

perry run --ios auto-detects missing cross-compilation toolchain and falls back to Perry Hub build server — packages project, uploads, streams build progress via WebSocket, downloads .ipa, extracts .app, installs and launches on device/simulator. Use --local/--remote flags to force either path.

WebAssembly target (--target wasm)

New perry-codegen-wasm crate compiles HIR directly to WASM bytecode using wasm-encoder. NaN-boxing scheme matches native perry-runtime (f64 values with STRING_TAG/POINTER_TAG). JS runtime bridge for strings, console, Math, and type operations. Outputs self-contained HTML (base64-embedded WASM) or raw .wasm binary. Supports functions, control flow, string literals, numeric ops, and console.log.

Web target minification & obfuscation

--target web now auto-minifies output — Rust-native JS minifier strips comments and collapses whitespace; emitter-level name mangling obfuscates local variables, parameters, and non-exported functions. Web runtime compressed from 3,337 lines to ~177. Also available via --minify CLI flag.

iOS improvements

  • Keyboard avoidance: auto-adjusts root view when keyboard appears, scrolls focused TextField into view
  • Live console output: perry run --ios now adds --console for live stdout/stderr streaming
  • App icon embedding from perry.toml configuration
  • Resource bundling: logo/ and assets/ directories are now included in .app bundles
  • Auto-create development provisioning profiles via App Store Connect API
  • Improved code signing: proper identity matching by team ID, development profile detection, entitlements

Bug fixes

  • Fix RefCell already borrowed panic in state callbacks (GH-4): state_set() now snapshots callbacks before invoking
  • Fix fetch linker error without stdlib imports (GH-5): fetch() as global built-in now properly links perry-stdlib
  • Fix perry run hanging after remote build: WebSocket loop now breaks on ArtifactReady
  • Fix perry run using wrong bundle ID: reads from perry.toml [ios].bundle_id
  • Fix iOS gradient rendering, image loading, and linker issues
  • Fix telemetry events not arriving: flush before exit + remove TTY gate
  • Multiple iOS code signing and provisioning profile fixes

Full Changelog: https://github.com/aspect-build/perry/compare/v0.2.179...v0.2.183

Don't miss a new perry release

NewReleases is sending notifications on new releases.