[HN Gopher] Wails v2 Released
___________________________________________________________________
Wails v2 Released
Author : synergy20
Score : 208 points
Date : 2022-09-23 16:09 UTC (6 hours ago)
(HTM) web link (wails.io)
(TXT) w3m dump (wails.io)
| arush15june wrote:
| Wails is great! I've been working with wails v2 on Windows, and
| it's been a great experience. Built and delivered a Windows
| desktop application in Go + AntD for a customer really quickly.
|
| It's a little complex app dealing with Win32 API's directly from
| Go and the binary being just 10MB is amazing, which can be
| compressed further with UPX.
|
| Though, UPX-compressed Go binaries has a very high rate of being
| flagged by antivirus software (especially MS Defender).
| CyberDildonics wrote:
| If you think a 10MB binary is amazing, try out FLTK, your cross
| platform GUI programs can start at 100KB.
| amelius wrote:
| It would be great if you could configure this depending on needs.
|
| E.g. include only the Canvas part, leave out JS, CSS, Video, etc.
| for a simple drawing app.
| jchw wrote:
| Congratulations to everyone who worked on this! I'm definitely
| going to have to give this a chance. The fact that it doesn't
| require any large dependencies shipped with the application is a
| huge draw, and with native UI options in Go being a little
| lacking, it would suffice to say this option is currently very
| enticing.
|
| As for my part, I've regrettably been pretty absent on go-
| webview2 lately, working on other projects and life, but it's
| cool to see some initiative on porting OpenWebView2Loader bits to
| Go thanks to Wails. For anyone wondering what this is, on Windows
| right now go-webview2 avoids CGo by linking directly to
| WebView2Loader.dll and implementing COM bits in Go. However, to
| make matters a little complicated, this DLL is also embedded into
| the binary and then loaded with a memory implementation of the
| Windows loader, in order to avoid needing to separately ship this
| DLL. If this sounds horrific, I agree; my intent was always to
| reverse engineer WebView2Loader and port it to Go, but I only
| ever finished the reversing part. In the meantime, it has been
| ported to Pascal, and maybe soon, it will be ported to Go, too.
| It's pretty uneventful for the end user, but I think it will lead
| to better robustness in the end, so I am excited for it.
| djsavvy wrote:
| This looks incredible. I built a posture improvement app for
| MacOS, with the timing code written in Go and the actual window
| display in Swift. This seems like it would have been a far
| cleaner solution overall.
|
| Does anyone have experience developing in Wails? How is the dev
| experience?
| chris_st wrote:
| I built a small thing in Wails, and was really quite happy with
| the experience, and got some great support when I had
| questions.
| samanator wrote:
| I've developed a few test application in wails. It's great and
| stable as a single widow application! It doesn't have support
| for system tray nor multiple windows.
|
| Also, having contributed I have to say the source code is very
| well organized and easy to understand!
| HillRat wrote:
| Looks interesting and a great deal more elegant than the usual
| Electron mess, though I'm running into some kind of race
| condition on Windows that continually crashes `wails dev`, so
| that's a bit disappointing. Nonetheless, looking forward to using
| this.
| 01walid wrote:
| How does this compare to Tauri ?
|
| Edit: it looks like it leverages its own Webkit for the frontend,
| but then how is this more efficient than Electron ?
| [deleted]
| stillicide wrote:
| Building on top of a framework that bundles a Chromium should
| result in a smaller application than building on top of a
| framework that bundles a WebKit. As an example, compare Vivaldi
| (Chromium) and Orion (WebKit).
|
| Chromium has many more batteries included though, such as
| V8/Node.
| encryptluks2 wrote:
| I believe the right term here is WebView, which will use the
| OS's native browser framework to display the app. For Windows
| this would be Microsoft Edge WebView2 and for Linux
| webkit2gtk. I do believe Qt WebEngine (or Qt WebView) might
| be the better option for Linux though, although I'm guessing
| webkit2gtk is being used because of more readily available Go
| bindings.
| campbellmorgan wrote:
| The key to it is that it uses the OS's webview (on Windows 10+
| the new edge webview https://developer.microsoft.com/en-
| us/microsoft-edge/webview...) which means that you're mostly
| not bundling the whole of chromium / webkit each time.
| mumphster wrote:
| Tauri does this as well, I use it for
| https://github.com/Ell/shortmon and get ~1-2 meg binaries
| with a react based ui
| throwoutway wrote:
| Is there something similar but for Python?
| dang wrote:
| Discussed recently:
|
| _Wails: Build cross-platform applications using Go_ -
| https://news.ycombinator.com/item?id=32080899 - July 2022 (45
| comments)
| jallasprit wrote:
| I made a speedometer display application for my motorcycle with
| Wails 1, and it has been great tbh. Low requirements and all
| bitdivision wrote:
| Interesting. Any more details?
|
| I thought about implementing something like this with a SBC to
| replace a broken motorcycle dashboard but never got around to
| it.
| jallasprit wrote:
| In short: circular lcd display hooked up to a raspberry pi
| running the application, with a special connector to handle
| CANBUS
| heleninboodler wrote:
| That sounds great. I don't suppose the code is published,
| is it? I'd love to see examples of CANBUS interaction from
| the rpi.
| cheriot wrote:
| I've been work on a proof of concept with Wails and it's a
| productive development loop. The only thing different about the
| front end code vs a website is that it calls functions generated
| from my Go back end (fully typed!) instead of making an HTTP
| call.
|
| The end result is a single binary. I suspect there's interesting
| things to be built as small extensions/compliments to command
| line tools.
| dopamean wrote:
| This sounds really cool and makes me want to learn go so I can
| make some desktop apps...
| afavour wrote:
| > The only thing different about the front end code vs a
| website is that it calls functions generated from my Go back
| end (fully typed!) instead of making an HTTP call
|
| Now take it to the next level: put those functions in a service
| worker and create a REST API that works entirely locally and
| can be switched out for a remote server with ease.
|
| Or don't, if you have no intention of making a web version. But
| IMO it's a powerful model for those who do.
| cheriot wrote:
| That's an interesting point about service workers. My
| thinking is to layer them in the other order: the generated
| types are based on Go struct json tags so the function
| signatures I'm calling could be implemented as REST calls. ie
| SomeEndpoint(paramA: string, paramB: string):
| Promise<SomeEndpointResponse>
|
| The notion of a web version is a distant one for the current
| project so it's only a theory.
| encryptluks2 wrote:
| This looks incredible. Really nice work so far. While I'm not
| interested in the more bloated frameworks, hoping that I can
| create something useful with just vanilla JS, HTML, and CSS.
| Could possibly even plug into Hugo to create a "native" app for
| content creators.
| tensor wrote:
| The "web" side is completely customizable. You can definitely
| use plain JS, HTML, and CSS.
| pstuart wrote:
| Agreed on the bloated frameworks.
|
| I'm also enamored with https://redbean.dev/ -- this is a good
| problem to have: which awesome project to play with?
| throw_m239339 wrote:
| What's the size of an Hello World with Wails? uncompressed?
| Because that's the issue with Electron, shipping yet another
| entire web browser with every installation. At the same time, if
| the app doesn't ship with a browser and use the webview available
| then it defeats the purpose of using that kind of tech since it
| means that whatever chromium engine which runs on the user's
| device has to be tested. No an issue for simple apps, a much
| bigger one with complex applications with browser API edge cases.
| thechao wrote:
| I feel, in my bones, that this must have been done for C, too:
| could someone google it for me? Doing a search for "... C
| Electron" is a bit fruitless.
| lf-non wrote:
| There is webview, a low level C library with various bindings
| that can be used to create a webview using os provided browser
| and interact with it. Wrt. featureset its is a lot more simpler
| and lower level than both electron and wails.
|
| https://github.com/webview/webview
| synergy20 wrote:
| you will need openssl for https,probably even need it for cross
| platform,that alone is a non starter for me.
| cweagans wrote:
| Don't get me wrong: https everywhere is a good policy, but
| I'm not super convinced of the need for strictly local
| connections to use https. Am I missing something?
| kelvie wrote:
| Wombat, a wails based gRPC GUI client has been working great for
| me and my team, and we use it for every gRPC demo we have to give
| since it's been introduced to the team.
| campbellmorgan wrote:
| I've been using v2 for a month or so and it's really great. There
| are a few things that feel a little bit rougher than the Rust
| equivalent (Tauri), but Go is just so much faster to code in that
| this has been a pleasure to work with.
|
| Also props to the lead maintainer Lea Anthony who seems to be
| behind all the very exciting momentum of the project
| wuschel wrote:
| What would be the main differences Wails and Tauri? Rust's
| gurantees regarding type safety and parallelism? I image that
| the performance characteristics greatly depend on the chosen
| front end framework, or am I mistaken here?
| simscitizen wrote:
| Are there ways to create cross-GC cycles with this framework
| (e.g. JS object pointing to Go object pointing back to a JS
| object), and if so, how does the framework handle this?
| jedimastert wrote:
| My initial instinct would be to treat the JS and Go as frontend
| and backend, and not have objects like that coupled so closely,
| but I don't know anything about this framework
| badrabbit wrote:
| Is there multi-window support yet? I wanted to do a hobby project
| with it months ago but spent too much time before I found out it
| can't do that. Wails+svelte+go was going to be my stack.
|
| I miss desktop UI designers.
| rank0 wrote:
| Is there a serious performance benefit here instead of using
| electron?
|
| You still need to spin up an instance of your operating system's
| javascript engine correct?
| meowtimemania wrote:
| I assume spinning up a JavaScript engine is much lighter than
| spinning up a chromium browser (like in electron)
| marcus_holmes wrote:
| This looks interesting, but I'm always hesitant to use anything
| in Go that's developed with a Rails mindset. They're two very
| different ways of looking at development, and trying to anything
| in Go using a Rails mindset usually ends in very confused code.
|
| But I'll keep an open mind and give it a look
| cheriot wrote:
| I've used both and not seen any sign of the Rails mindset in
| Wails. We're writing Go not Wuby :)
| chris_st wrote:
| Having done Rails for about a decade, I _believe_ that it 's
| just the name. It's not only a reference to Rails, but the main
| author lives in Wales (the country), so it's a nod to that as
| well.
|
| Wails is really well done, and pretty minimal, and (to me)
| doesn't feel like Rails at all.
___________________________________________________________________
(page generated 2022-09-23 23:00 UTC)