golang-ui / nuklear

This project provides Go bindings for nuklear.h — a small ANSI C GUI library.
https://github.com/vurtun/nuklear
MIT License
1.57k stars 98 forks source link

Supporting nucular #7

Open Chillance opened 7 years ago

Chillance commented 7 years ago

Hey!

I just found out about https://github.com/aarzilli/nucular and was wondering if this project can help that in any way? I guess not as this is more of a quick way of exposing the C code, although didn't the Google folks use a tool to "convert" C into Go code?

xlab commented 7 years ago

Hi @Chillance!

Yes I've discovered that project too, someone did GUI for Delve using Nucular. But the problem is that source code of Nucular doesn't follow up with source of Nuklear, the docs say:

Source port to go of an early version

It's unclear to me how early that version is, what's the API coverage, how to migrate from Nuklear to Nucular (i.e. what are the conceptual API differences). My project (https://github.com/golang-ui/nuklear) will stay alive to provide full-featured API set and full compatibility with Nuklear user code and examples, until Nucular evolves to some extent where we can simply switch over.

xlab commented 7 years ago

although didn't the Google folks use a tool to "convert" C into Go code?

Transpiling generic C to Go code is a very challenging task, currently it can be solved on a per-project basis, e.g. folks wrote a transpiler for Go compiler. And someone should write a C transpiler for Nuklear code. In my opinion, transpiling C code to Go by hand for libraries of such size is just a waste of time and human resources.

There is no reason for me to prefer pure-Go version instead of C version yet, even if it's hand-crafted and made with love. I prefer feature completeness and guarantees.

Chillance commented 7 years ago

One really big benefit with Go is how easy it is to build source code without too many annoying dependencies, tweaks and messing around, which is why that in the end a pure Go solution is something I really long for. Although, it wasn't all that complicated to use this library actually, since the nuklear.h file is standard ANSI C, and don't need much more than glfw. Still, I don't like the need of another compiler and all that extra to build Go code. Especially since it makes building multi-platform so much more complicated.

However, it seems to me that Nucular is quite in the early stages, so until it matures, I think I will use this nuklear solution as it pretty much is a complete wrapping around the C code and more complete as you say. But do get in contact with them and see if maybe you could help them out?

I agree that porting over it all might be a lot of work, but in the end I really would prefer a pure Go solution, and maybe something could be made to make that easier?

xlab commented 7 years ago

@Chillance ,

One really big benefit with Go is how easy it is to build source code without too many annoying dependencies

github.com/golang-ui/nuklear in its current form has no dependencies that require additional steps, it's also go-getable.

I don't like the need of another compiler and all that extra to build Go code.

I agree, but the problems of having gcc around are so negligible there, you would still have deps on CGO, because you need OpenGL, Vulkan and other platform-related deps. There are tons of C deps coming in when you develop any serious application. I'd like to see them in pure Go in 10 years, but I want to make stuff today.

But do get in contact with them and see if maybe you could help them out?

I could help them with platform porting, but seems that they've ignored Nuklear's principle of platform backends and embedded /x/mobile https://github.com/aarzilli/nucular/issues/4 so nothing much to help there. I'll be watching.

Chillance commented 7 years ago

Hey! Thanks for reaching out to them. I hope things will progress to the better. :)

fire-pig commented 5 years ago

Just wanted to say thanks for creating this go-compatible nuklear library! Looking forward to digging into it.