Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify capabilities and limitations for each language (aka Yelp for Godot Bindings) #13

Open
Xananax opened this issue Sep 8, 2020 · 20 comments

Comments

@Xananax
Copy link

Xananax commented Sep 8, 2020

Which language limits which exports, and in what manner?

Possibly also: which language limits consuming external libraries, or other potential limitations that somebody picking a language should be aware of

Related: #7

@Vivraan
Copy link
Member

Vivraan commented Sep 9, 2020

Didn't particularly get this one: all languages in this list maintain C interoperability so whatever external library can't be linked won't work, right?

I don't immediately see how a specific language will limit a programmer in accessing Godot bindings, and if it's a limitation of the language it's not within the scope of our document - we only provide our best estimate of the quality of Godot bindings available for a specific language!

@Xananax
Copy link
Author

Xananax commented Sep 9, 2020

That's possibly a bad example then, and maybe I shouldn't have mentioned it, but I meant, more generally, to list any limitations that might bite the adopted of a language in the butt later down the line

@ShalokShalom
Copy link
Collaborator

To be clear: Language or implementation limits?

@Vivraan
Copy link
Member

Vivraan commented Sep 9, 2020

To be clear: Language or implementation limits?

+1

@ShalokShalom
Copy link
Collaborator

That is a question? 😂

@ShalokShalom
Copy link
Collaborator

Limitation in HTML exports:

  1. Language (runtime) needs to be ported to wasm.
  2. This patch/progress need to be done for GDNative languages: https://godotengine.org/article/godot-web-progress-report-2

godotengine/godot-proposals#147

@Xananax
Copy link
Author

Xananax commented Sep 12, 2020

Language or implementation limits.

Here's the use case:

  • I am interested in Godot-Ecmascript
  • I decide to use it
  • Turns out, HTML exports don't work. I didn't know, because I didn't think to check

Other user case:

  • I am interested in Godot-Lua
  • I realize half way in my project Godot-Lua doesn't have any support for export hints, I can't properly expose my variables to the editor

I don't know if HTML exports don't work with Godot-ecmascript, nor if Godot-Lua doesn't support exports; those are hypotheticals. I've tried running a simple game with Godot-Ecma and it didn't work, but I don't know if it's for lack of support or because I missed something.

My point is simply that for a supported language to "work", there is a certain level of expectations from a user's perspective. Are those expectations met?

Some examples of expectations I can think of:

  • Exports for all Godot-supported platforms (Windows, Mac, Linux, Android, IOS, HTML, Server)
  • Full editor support
  • Full Godot API support
  • Support for threads (in all supported platforms?)

@Vivraan
Copy link
Member

Vivraan commented Sep 13, 2020

Language or implementation limits.

Here's the use case:

  • I am interested in Godot-Ecmascript
  • I decide to use it
  • Turns out, HTML exports don't work. I didn't know, because I didn't think to check

Other user case:

  • I am interested in Godot-Lua
  • I realize half way in my project Godot-Lua doesn't have any support for export hints, I can't properly expose my variables to the editor

I don't know if HTML exports don't work with Godot-ecmascript, nor if Godot-Lua doesn't support exports; those are hypotheticals. I've tried running a simple game with Godot-Ecma and it didn't work, but I don't know if it's for lack of support or because I missed something.

My point is simply that for a supported language to "work", there is a certain level of expectations from a user's perspective. Are those expectations met?

Some examples of expectations I can think of:

  • Exports for all Godot-supported platforms (Windows, Mac, Linux, Android, IOS, HTML, Server)
  • Full editor support
  • Full Godot API support
  • Support for threads (in all supported platforms?)

What I read from this was provisional QA testing of bindings!

A noble act, I admit, where we test the language bindings and provide our own rating for them!

It is much more foolproof compared to simply pasting existing info from their READMEs.

If you find the time, please look into each of these bindings and provide your analysis! Also, it might help us if you can provide a checklist which noobs like me can use for testing language bindings! 😁

@Vivraan Vivraan changed the title specify capabilities and limitations for each language Specify capabilities and limitations for each language (aka Yelp for Godot Bindings) Sep 13, 2020
@ShalokShalom
Copy link
Collaborator

I think we can automate a bit at least. Isn't there the chance to check the API compatibility in some automated way?
We would also contact the maintainers, in order to evaluate this.

@Vivraan
Copy link
Member

Vivraan commented Sep 16, 2020

Absolutely, we can write unit tests which correspond to items in a checklist expanded from @Xananax's list for all the languages!

Consider that "full editor support" means that a number of different editor features need to be accessible via the bindings, each of which is an item. Likewise for Godot API support (Editor support ⋲ API support iinw) and multithreading support and whatnot.

@ShalokShalom
Copy link
Collaborator

@perbone Is Lua capable of exporting to HTML?

@perbone
Copy link

perbone commented Sep 17, 2020

At the moment no. It's on my list of next things to do.

@ShalokShalom
Copy link
Collaborator

ShalokShalom commented Sep 18, 2020

Some more HTML5 stuff: C# is supported, despite not being listed in the documentations as such (got already reported)
And C++ modules are obviously also supported. GDNative generally not, so that leaves us with GDScript, C# and C++ modules for now? I suggest to list the other .Net languages all in one category, to describe them.
Like Clojure, F# and so on:

___________|__________|______________________
F#, Clojure    Mono     All Platforms, via C#
C#             Mono     All Platforms
C++ module   Native     All Platforms

And so on

@Vivraan
Copy link
Member

Vivraan commented Sep 19, 2020

HTML5 support is limited to the non-GDNative stuff. That's already one less reason to use other languages tbh, since I'm assuming that there's no WASM/JS support through NativeScript yet.

@sheepandshepherd
Copy link
Collaborator

Supposedly GDNative will work on HTML5 soon according to this news post from last month:

stay tuned for more as GDNative support is coming to web and that's a matter for the next blog post.

But I haven't seen any details or announcements about this. No idea who's working on it.

@Vivraan
Copy link
Member

Vivraan commented Sep 20, 2020

Wish I could tag @Calinou here.

@ShalokShalom
Copy link
Collaborator

I mentioned this already: #13 (comment)

@Calinou
Copy link
Contributor

Calinou commented Sep 20, 2020

GDNative support in HTML5 is still coming, but I don't know for sure if it will be available in 3.2.4.

@ShalokShalom
Copy link
Collaborator

See here the tracking issue:
godotengine/godot#12243

@ShalokShalom ShalokShalom mentioned this issue Sep 21, 2020
@Vivraan
Copy link
Member

Vivraan commented Sep 21, 2020

@ShalokShalom I guess we can now open a PR to address #7, #11, this (#13), and #20.

This was referenced Sep 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants