github PerryTS/perry v0.2.203

latest releases: v0.5.1206, v0.5.1205, v0.5.1182...
3 months ago

What's new

Android: Audio capture & permission handling

  • PerryActivity now requests all manifest permissions at startup — apps declare permissions in perry.toml (e.g. permissions = ["RECORD_AUDIO"]) and the system dialog appears automatically before native code runs. No manual permission handling needed.
  • Audio capture API (perry/system): audioStart(), audioStop(), audioGetLevel(), audioGetPeak() — real-time A-weighted dB(A) measurement via AudioRecord/JNI.

Android: Canvas rendering fixes

  • Fixed Canvas widget invisible on Android — CANVAS_STATES was thread_local (created on perry-native thread, drawn from UI thread). Now uses global Mutex<HashMap>.
  • Fixed drawLine JNI signature typo that silently broke all line drawing.
  • Canvas ImageView now gets explicit LayoutParams so it has visible dimensions.
  • Canvas Clear now uses PorterDuff.Mode.CLEAR instead of opaque white fill.

Android: Text rendering fix

  • Fixed set_font_weight() passing null Typeface to setTypeface(), which corrupted text to show "undefined". Now creates a valid Typeface via Typeface.defaultFromStyle().

Audio capture API (all platforms)

  • New perry/system audio functions: audioStart, audioStop, audioGetLevel, audioGetPeak, audioGetWaveformSamples, getDeviceModel.
  • macOS/iOS: AVAudioEngine with block-based tap callback
  • Android: AudioRecord via JNI with background Rust thread
  • Linux: PulseAudio simple API (libpulse-simple)
  • Windows: WASAPI shared-mode capture
  • Web: getUserMedia + AnalyserNode
  • All platforms share 48kHz A-weighting IIR filter, EMA smoothing, and atomic lock-free state.

perry run android pipeline

  • perry run android now compiles, packages (via Perry Hub), signs with debug keystore, installs via adb, and launches — full end-to-end workflow.
  • Fixed find_library() for cross-compile targets to search target/<triple>/release/ relative to the perry executable.

Other

  • Upgraded Cranelift from 0.113 to 0.121.
  • Windows: enabled geisterhand linking, registered all widget types.

Don't miss a new perry release

NewReleases is sending notifications on new releases.