Skip to content

re-write application in Go

Administrator requested to merge go_go_gnss into master

this serves to address several issues with the original python version:

  • high cpu usage at idle and when servicing connected clients (some profiling a while back suggested Trio was burning CPU cycles at idle)

  • concurrency on python is bolted on, at best. Trio is more approachable than asyncio (imho...), but both are awkward to use and maintain

The reasons I went with Go:

  • concurrency in Go is a true "first class citizen"

  • much smaller app + dependencies (python + python-trio is 50MB+ on Alpine, compared to ~3MB for the entire Go app+dependencies)

  • cpu usage at idle and when servicing clients is much lower (~0% at idle, and 2-4% when active, measured loosely on a librem 5). active cpu usage probably can't be reduced much more without increasing the baud rate of the STM gnss module I used...

a python branch has been made from master for 'archival' purposes.

Merge request reports

Loading