Skip to content

Releases: PerryTS/perry

v0.2.183

14 Mar 07:17

Choose a tag to compare

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

v0.2.179

13 Mar 19:55

Choose a tag to compare

What's New

  • App icon enforcement: perry publish now blocks (hard error) iOS and macOS App Store submissions when no app icon is configured, instead of just warning
  • Interactive icon prompt: When no icon is configured, perry publish prompts for a path to a 1024×1024 PNG, copies it to assets/icon.png, and updates perry.toml automatically
  • Project-level icon config: Icon configuration moved from [app.icons] to [project] section in perry.toml (falls back to [app] for backwards compat)
  • Beta consent check and error reporting for publish command

v0.2.173

08 Mar 09:09

Choose a tag to compare

What's New

  • perry publish auto-export .p12: auto-detect signing identity from macOS Keychain, export to temp .p12 with generated password
  • Automated package distribution: new releases now automatically update Homebrew tap and APT repository
  • Linux ARM fix: CStr portability for aarch64-linux (c_char = u8)

Install

# macOS (Homebrew)
brew install perryts/perry/perry

# Debian/Ubuntu
curl -fsSL https://perryts.github.io/perry-apt/perry.gpg.pub | sudo gpg --dearmor -o /usr/share/keyrings/perry.gpg
echo "deb [signed-by=/usr/share/keyrings/perry.gpg] https://perryts.github.io/perry-apt stable main" | sudo tee /etc/apt/sources.list.d/perry.list
sudo apt update && sudo apt install perry

# Quick install
curl -fsSL https://raw.githubusercontent.com/PerryTS/perry/main/packaging/install.sh | sh

v0.2.97

05 Feb 08:33

Choose a tag to compare

What's New

  • Add AsyncLocalStorage from async_hooks / node:async_hooks
    • new AsyncLocalStorage(), run(), getStore(), enterWith(), exit(), disable()
    • Handle-based implementation using perry-stdlib common handle registry
    • Fixed is_native_module() to strip node: prefix for Node.js built-in imports

Bug Fixes

  • Fix Cranelift I32 type mismatch panics in variable assignments and logical ops (v0.2.96)
  • Fix closure capture missing variable references in Delete, Error, Uint8Array, EnvGetDynamic, JS runtime expressions (v0.2.95)
  • Fix function inlining breaking Set/Map/Array operations (v0.2.94)