ruby_runtime 0.0.14
ruby_runtime: ^0.0.14 copied to clipboard
Embed Ruflet's mruby runtime in Flutter apps on mobile and desktop.
0.0.14 #
- Autostart no longer needs configuring. The packaged project is the opt-in: a
self-contained build ships one and a server-driven build does not, which is
the distinction the flag encoded anyway. It therefore does not matter which
version of the CLI generated the client.
RufletRuntimeAutostart/ruflet.runtime.autostartstill turn it off. start()keeps working when the platform owns the runtime. Its arguments cannot take effect -- the VM boots once per process -- so instead of failing, the port is written into the file the caller is polling. A client generated beforeserverUrl()existed finds the server and gets the parallel startup without changing a line. On macOS that takes such a client from 350ms to a bound server and 435ms to a rendered page, down to 104ms and 154ms.- Rebuild the Linux and Windows VM artifacts, which 0.0.13 left with the eager icon tables. All five platforms now build them on demand.
0.0.13 #
- The platform layer now starts the VM itself, before the Flutter engine
exists: from
+loadon iOS and macOS, from anandroidx.startupprovider on Android, and from plugin registration on Linux and Windows. The VM boots in parallel with the engine instead of after it, so by the time Dart asks the embedded server has usually already bound its port. Opt in withRufletRuntimeAutostart(Info.plist) orruflet.runtime.autostart(AndroidManifest); desktop treats a packaged project as the opt-in. - Add
RufletRuntime.serverUrl(), which reports where that runtime ended up. Do not await it beforerunApp-- the VM is already booting alongside the engine, and blocking startup on it gives back the time that buys. start()now fails withautostart_owns_runtimewhen the platform owns the runtime. The VM boots once per process, so the call could not take effect; it previously reported success while silently doing nothing, leaving the caller waiting on a port file nothing would write.- Android unpacks the packaged project out of the APK itself, once per install, rather than having Dart copy it file by file on every launch.
- Rebuild the VM artifacts. Icon tables are now built on demand instead of at VM open, which was ~300ms of every cold start: macOS boots in 23ms (was 348ms) and Android in 41ms (was 466ms). The artifacts are also stripped, roughly a 60% size reduction. Linux and Windows artifacts are unchanged.
0.0.12 #
- Every platform plugin now bridges to the same four
ruflet_vm_*entry points in the prebuilt VM. iOS and macOS previously drove mruby themselves and carried their own copy of the bootstrap and host logic, so the plugin and the VM could drift apart -- and the shipped Linux and Windows libraries had already broken that way. Releasing a runtime is now replacing the built artifact, nothing else. - Drop the vendored mruby sources, Onigmo and host build outputs from the iOS and macOS folders. Nothing compiles them any more: the bridge needs only ruflet_vm_host.h.
- Fix
Ruflet::Server#web_client_root, which useddefined?(@ivar). The embedded VM has nodefined?keyword, so it parsed as a method call and every HTTP request raised NoMethodError on device. - Rebuild every VM artifact from current framework sources.
0.0.11 #
- Fix the Linux and Windows VM libraries. 0.0.10 rebuilt them from the mruby
archive alone, which dropped the host layer the desktop plugins link
against:
ruflet_vm_start,ruflet_vm_stop,ruflet_vm_is_running,ruflet_vm_copy_error, and the embedded bootstrap bytecode. A Linux or Windows build failed at link time with undefined references. Both are now built from the mruby archive plusdesktop/ruflet_vm_host.cpp, exporting the same API as before. iOS, macOS and Android were unaffected -- their plugins compile the host layer themselves.
0.0.10 #
- Rebuild every prebuilt VM from current framework sources: iOS device and
simulator, Android (all four ABIs), Linux x64 and aarch64, and Windows.
0.0.9 rebuilt only macOS, so every other platform still shipped a framework
from before the
ruflet_appcontrol rename. An application callingruflet_appserialized a control name no client registers, and a self-contained build rendered "Unknown control: RufletApp" on device while server-driven web and desktop, which serialize on the host, worked. - Embed
ruflet_coreandruflet_server0.0.21.
0.0.9 #
- Rebuild the macOS VM from the current framework sources. The 0.0.8 artifact
predates the
ruflet_appcontrol rename, so an application callingruflet_appfell through to a control the client cannot render and failed silently, with no connection and no error. - Embed
ruflet_coreandruflet_server0.0.20.
0.0.8 #
- Embed the published
ruflet_core0.0.19 andruflet_server0.0.19 gems in every prebuilt Android, iOS, macOS, Linux, and Windows VM artifact. - Include repeatable snackbar and banner presentation fixes from Ruflet 0.0.19.
- Refresh artifact manifests and checksums so application builds continue to consume the packaged VM without compiling mruby in developer environments.
0.0.7 #
- Run self-contained Ruflet applications through the generic embedded mruby VM
and preloaded Ruflet gems, using the app's normal
main.rbentry point. - Embed the published
ruflet_core0.0.18 andruflet_server0.0.18 payloads in prebuilt device binaries; application builds no longer compile the VM. - Package the runtime for Android, iOS, macOS, Linux, and Windows, with dynamic embedded-server port discovery for multiple application instances.
- Add the runtime and protocol fixes required by current Ruflet controls, services, pickers, dialogs, maps, audio, Rive, charts, and SpinKit clients.
- Improve embedded runtime concurrency, callback reporting, and UI update performance without adding application-specific behavior to the VM.
0.0.6 #
- Update embedded Ruflet pages from client resize events so
page.widthandpage.heightreflect the live viewport, and exposepage.on_resize. - Add Linux desktop support with the complete
ruby_runtimemethod-channel contract used by self-contained applications.
0.0.5 #
- Bind the embedded server to an available port and report the selected port to the client, allowing multiple packaged apps to run at the same time.
- Add the mruby compatibility surface needed by Ruflet gems, including regular expressions, standard extension gems, common stdlib helpers, randomness, clocks, and sleep support.
- Add a desktop harness that exercises the same mruby sources shipped on device.
0.0.4 #
- Add packaged Linux
aarch64/x86_64and Windowsx86_64Ruflet VMs. - Expose the same
start,status, andstopruntime contract on Windows and Linux. - Rebuild the universal macOS VM with the current preloaded Ruflet gems.
- Support Flet-compatible
Page.windowthrough the existing Ruflet protocol without creating another VM.
0.0.3 #
- Fix native Android, iOS, and macOS includes to load the packaged embedded Ruflet runtime header from
shared/.
0.0.2 #
- Align Android plugin packaging and publish metadata for Ruflet self-contained builds.
- Document supported runtime behavior and developer usage more clearly.
- Prepare the package for pub.dev publication from the standalone
ruby_runtimepackage.
0.0.1 #
- Initial
ruby_runtimeFlutter plugin release. - Added embedded mruby execution APIs for Ruflet.
- Added embedded file server support used by self-contained Ruflet apps.
- Added Android, iOS, and macOS platform implementations.