IsaacShelton / Adept3x

A language designed to help maximize developer productivity and safety
GNU General Public License v3.0
6 stars 0 forks source link

Cross compile to mobile platforms #22

Closed ghost closed 2 months ago

ghost commented 2 months ago

Android and Apple (iOS, iPadOS,...). I only care about Android because I don't own any Apple devices.

What's your thoughts about this?

This is huge, unlike adding the templates for a bunch of Unix-like systems (Haiku, illumos,...).

Curculigo commented 2 months ago

What's the point of this? Running your hello world console app in mobile?

ghost commented 2 months ago

I'm talking about developing complete apps that could be published in store. This is why I said it's a huge job and I'm asking the developer what he's thinking about it.

IsaacShelton commented 2 months ago

Yes having support for Android/iOS would be nice.

However, Android support would be very difficult, as it would need ~2 more ABIs be implemented, and would also require us to support 32-bit operating systems (although maybe it could be partially supported without it, just wouldn't work on all devices).

Also, as far as I understand, Apple keeps a very tight control around iOS app development, and I'm not sure if they even allow non-apple compilers to target iOS.

Additionally each platform would require extensive auto-generation of project files most likely, as well as specific bindings to different functions be manually exposed.

Potentially, even a bytecode interpreted version of Adept might be viable, although it would have its own pros and cons as well. It would greatly simplify the cross-compilation and would be less vulnerable to ABI inconsistencies, Although it would come at the cost of some performance. We would get Android/iOS support "for free" then, although bindings will always be a challenge.

Android/iOS targets would be very nice though, but the best way to do that isn't very clear right now.

IsaacShelton commented 2 months ago

Also supporting Android/iOS in a meaningful way is more difficult than just compiling to the right format.

They each have extensive proprietary toolchains that update frequently, as well as APIs that don't have a C equivalent.

If we do fully support these platforms, we should have a way of interacting with these APIs.