Skip to content

v0.4.24

Choose a tag to compare

@proggeramlug proggeramlug released this 28 Mar 16:56
· 4518 commits to main since this release

Features

  • macOS cross-compilation from Linux — codegen triple, framework search paths (-lobjc, CoreGraphics, Metal, IOKit, DiskArbitration), find_ui_library for macOS target
  • iOS Info.plist completeness — all Apple-required keys, CFBundleIcons with standard naming (AppIcon60x60@2x etc.), version/build_number read from perry.toml, UILaunchScreen dict instead of storyboard reference
  • Native extensions & App Store review docs — new documentation pages for plugin development and Apple review guidance

Bug Fixes

  • Bitwise NOT (~x) — wrapping semantics fixed: f64→i64→i32 via ireduce for proper JS ToInt32, instead of fcvt_to_sint_sat which saturated at i32::MAX
  • IndexGet string detection — property access returning array elements (e.g., log.topics[0]) now treated as potential string for correct comparison codegen
  • Array.filter/find/some/every/flatMap — callback dispatch and module init ordering fixed
  • Null arithmetic coercionMath.max(null, 5) etc. now coerces null to 0 via js_number_coerce
  • new X(args) — resolves cross-module imported constructor functions and exported const functions via __export_ data slot
  • new Date(stringVariable) — properly NaN-boxes with STRING_TAG for string detection
  • is_macho — uses target triple instead of host cfg! check; always generates main for entry module on iOS/macOS cross-compile
  • ld64.lldsdk_version set to 26.0 (Apple requires iOS 18+)
  • Windows cross-compile/FORCE:MULTIPLE for duplicate perry_runtime symbols in native libs