commit b3a1aa16718fae2a5ed86581aa655abbd91086a7
parent b10049bc123564e5703bf5386bfbbac9f707fa88
Author: decentral1se <decentral1se@web>
Date: Sat, 3 Aug 2024 14:36:47 +0200
init go page
Diffstat:
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.