Replies: 12 comments
-
JavaScript can do this because it is interpreted. This is hard to do for compiled languages. Will this result in worse performance? |
Beta Was this translation helpful? Give feedback.
-
@Happypig375 Yeah, but C# is not completely compile language. Unlike golang and rust, c# compiler doesnt compile to target native assembly completely. C# compiler have three options that are tiered compile, JIT, AOT. As I known, JIT compiler will compile intermediate language(like jvm bytecode, a.k.a. CIL or MSIL). And that artifacts are just steel optimized interpretable codes. In theory, it is possible with better perf than javascript. But currently, xamarin architecture made its not possible. Xamarin build tool is using mono compiler or llvm compiler which mean that outputs will be transformed always target platform languages(objc or java) with AOT compile. Its cost effective strategy but its not ideal way to reach dynamic patching. Anyway, from past to here, We are already using dynamic patch like dll replacing. In my think, the almost JIT based applications have cold start problem but that problem is already resolved tiered compilation. And that is meaning also its applyable to mobile platform. Jit compile business logic and ui components to be replacable. AOT compile renderer layer and default SDK(like LINQ and Collection, native plugins) to boost start time. |
Beta Was this translation helpful? Give feedback.
-
AOT is a requirement of Apple for iOS devices. A JIT cannot run on an iPhone. Either you use an interpreter like JavaScript or an AOT compiler so native code runs on the iPhone. |
Beta Was this translation helpful? Give feedback.
-
No there are already limitated options.
I think its not impossible. |
Beta Was this translation helpful? Give feedback.
-
Exactly. An interpreter. Not a JIT. |
Beta Was this translation helpful? Give feedback.
-
Ah I see, I misunderstood between JIT and Interpret. |
Beta Was this translation helpful? Give feedback.
-
This is not even allowed on iOS due to security concerns !
And as per other replies the issue with this is performance - anything that
has to be complied at runtime is slow
That’s why .net is actually moving more towards native compilation (.net
core 3 and above supports this for Linux) and Xamarin.iOS has always done
this because Apple doesn’t allow dynamic languages on iOS outside of a
browser
Bottomline - in the real world performance is king and is the main
yardstick to a mature platform
On Tue, 01 Sep 2020 at 18:47, enif.lee ***@***.***> wrote:
Summary
Another cross platform ui framework based on javascript can support
dynamic patch(aka Code Push). And this feature is really important
thesedays to reach deliver faster to customer.
And microsoft appcenter support Code Push. So,, Maui will contain this
feature? As I known, Its hard to support current xamarin build system(mono
aot and il2cpp or java). But, It's killer feature that flutter doesnt have
and another not javascript based frameworks.
It might be need to implement IL Interpreter(jit(support tiered and
cachable) compiler) about dll for each target platforms. And can be
replacable dlls at app runtime.
Intended use cases
https://docs.microsoft.com/en-us/appcenter/distribution/codepush/
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<https://github.com/dotnet/maui/issues/218>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACOGERQKTFFCDCDZJIKU2JLSDUQSHANCNFSM4QR6BAIA>
.
--
Thanks,
Matthew Joughin
Founder / CTO
+27 81 529 7169
http://www.adaptableapps.net
|
Beta Was this translation helpful? Give feedback.
-
@mrwcjoughin Yeah, but React Native is not on Browser. As I known, RN is using JavaScriptCore(can be replaced V8) and render to native component, That's meaning iOS allow AOT compiled app or interpretable language(not only browser). Also already mono published IL interpreter on IOS and CoreCLR seems to be working for interpreter(dotnet/coreclr#8594). Performance is always important and every cross-platform framework are working hard for that. But, From view of business logic, performance is not a big deal. (In this case, it seems that the problem is how to improve rendering/cold-start performance.) Several people are already working hard on dynamic patching.
|
Beta Was this translation helpful? Give feedback.
-
React Native compiles to native - hence its name.
Therefore there is NO jitting and thats why its allowed on iOS
There is no mono that is allowed to run on iOS - which is exactly why when
you build a Xamarin.iOS app it compiles the C# to IL and then transpiles
the IL to *objective-c* and then compiles that to native - therefore you
end up with a *completely native app*
Which is also why Xamarin.iOS apps are always faster than Xamarin.Android
apps - because the iOS app is native and the Android app runs on the mono
runtime and therefore is jitted on first run everytime.
It is also why we are not allowed to use the dynamic type when targeting
iOS - because that causes recompiling at runtime on the fly - something
again that is not allowed on iOS due to security reasons
…On Thu, Sep 3, 2020 at 8:15 AM enif.lee ***@***.***> wrote:
@mrwcjoughin <https://github.com/mrwcjoughin> Yeah, but React Native is
not on Browser. As I known, RN is using JavaScriptCore(can be replace V8)
and render to native component, That's meaning iOS allow AOT compiled app
or interpretable language(not only browser).
Also already mono published IL interpreter on IOS and CoreCLR seems to be
working for interpreter(dotnet/coreclr#8594
<dotnet/coreclr#8594>).
Performance is always important and every cross-platform framework are
working hard for that. But, From view of business logic, performance is not
a big deal. (In this case, it seems that the problem is how to improve
rendering performance.)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://github.com/dotnet/maui/issues/218#issuecomment-686278864>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACOGERWUJNGM75Q62HHTAWTSD4YBFANCNFSM4QR6BAIA>
.
|
Beta Was this translation helpful? Give feedback.
-
It is a really useful feature. |
Beta Was this translation helpful? Give feedback.
-
mono-interp supports this already (ios device debugging is an example), but u need to implement codepush yourrself, mstf wont do this thing loudly which may trigger apple s furiousness. btw, react native does most thru jit than interp cause webkir or blink does. |
Beta Was this translation helpful? Give feedback.
-
I've been using the DLL replacement approach since last year on my projects (Android only) without problems with the google play store... I've improved this with compile-time tasks that remove my subproject DLLs from the APK as it builds. And already exists this feature called "HotUpdate" since flutter 2.0: |
Beta Was this translation helpful? Give feedback.
-
Summary
Another cross platform ui framework based on javascript can support dynamic patch(aka Code Push). And this feature is really important thesedays to make delivering faster to customer.
And microsoft appcenter support Code Push. So,, Maui will contain this feature? As I known, Its hard to support current xamarin build system(mono aot and il2cpp or java). But, It's killer feature that flutter doesnt have and another not javascript based frameworks.
It might be need to implement IL Interpreter(jit(support tiered and cachable) compiler) about dll for each target platforms. And can be replacable dlls at app runtime.
Intended use cases
https://docs.microsoft.com/en-us/appcenter/distribution/codepush/
Beta Was this translation helpful? Give feedback.
All reactions