permacomputing

Source repository for the main permacomputing wiki site
git clone http://git.permacomputing.net/repos/permacomputing.git # read-only access
Log | Files | Refs

commit b3a1aa16718fae2a5ed86581aa655abbd91086a7
parent b10049bc123564e5703bf5386bfbbac9f707fa88
Author: decentral1se <decentral1se@web>
Date:   Sat,  3 Aug 2024 14:36:47 +0200

init go page

Diffstat:
AGo.mdwn | 11+++++++++++
1 file changed, 11 insertions(+), 0 deletions(-)

diff --git a/Go.mdwn b/Go.mdwn @@ -0,0 +1,11 @@ +Go is a general-purpose programming language created in 2007 designed primarily for the needs of large-scale server-side networked application programming. + +There are several major implementations: [gc](https://go.googlesource.com/go), [gccgo](https://github.com/golang/gofrontend), [gollvm](https://go.googlesource.com/gollvm/), [GopherJS](https://github.com/gopherjs/gopherjs) and [TinyGo](https://tinygo.org). + +Go has a published [language specification](https://go.dev/ref/spec) and a [v1 compatibility promise](https://go.dev/doc/go1compat) which is useful when considering long-term program maintenance. + +The loading of program dependencies is based on URLs. This implies always-on internet connectivity and typically centralised git repository hosting. A work-around for this is to use [vendoring](https://go.dev/ref/mod#vendoring) which supports downloading and bundling all program dependencies into the source tree. + +Go can be [[bootstrapped|bootstrapping]] with Go, or C (via `gccgo`/`gollvm`). However, with the introduction of generics, not all new version of Go can be bootstrapped with C. `gccgo` supports [up to 1.18](https://go.dev/doc/install/gccgo). This may be a useful version to target when considering compatibility with unported systems. + +There are [language design decisions](https://tinygo.org/docs/concepts/faq/why-a-new-compiler/) which make Go unsuitable for embedded systems. The [TinyGo](https://tinygo.org) project aims to provide an alternative.