Thanks for the answers. I asked this question because I'm preparing some tutorials to explain Go to students and I'm thinking about potential questions and discussions.
If I understand it correctly we could say then that Go's runtime has things in common with a VM's runtime (I'm thinking mostly in Java's) such as GC, goroutine (thread) scheduling, etc. However, Go's runtime cannot be considered a VM because it does not compile code to an intermediate language, it executes compiled native code instead. Cheers, Pablo On Wednesday, September 5, 2018 at 3:01:52 AM UTC+10, Jake Montgomery wrote: > > There are a lot of differences, and for the answer to be complete, you > would need to specify which language you wanted to compare it to. But on a > really simple level, thwd's answer is more or less correct. A VM language > is usually compiled into an instruction set for that VM. The VM then > provides a lot of "special sauce." Go is (usually) compiled directly into > machine code to be executed directly on the target system. > > One consequence of this is that the executable can be run without having > any other software installed on the machine. It also means that the code > for the stuff you inquired about such as the garbage collector, goroutine > scheduling and stack management, is all present in the single executable > compiled by go. > > As for learning more, it depends somewhat on what your experience level > is, and why you want to know. If you are relatively new to programming, I > would recommend just using go for a while, without worrying too much about > the "magic." If you have a strong background already, you could start > learning about the stuff you mentioned. Garbage collection would be an > interesting place to start. I don't know of any one resource, but there are > a number of interesting videos (gophercon, ect) by principal architects on > the subject. Keep in mind that all these things are constantly evolving, so > any information you get may not apply to the latest version of the > language. > > Good luck. > > > > On Tuesday, September 4, 2018 at 10:50:03 AM UTC-4, thwd wrote: >> >> A virtual machine has its own instruction set. Go compiles to machine >> code for a given target (which could be a virtual machine). >> >> On Tuesday, September 4, 2018 at 12:27:49 PM UTC+2, Pablo Rozas Larraondo >> wrote: >>> >>> The Go documentation provides some explanation about the difference >>> between Go’s runtime and a virtual machine here: >>> >>> https://golang.org/doc/faq#runtime >>> >>> Does anyone can recommend a good place to learn more about this? I’d >>> like to better understand how Go’s garbage collector, goroutine scheduling >>> and stack management are handled by the runtime and how it is different >>> from a virtual machine. >>> >>> Thanks, >>> Pablo >>> >>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.