On Wed, Feb 2, 2011 at 10:21 AM, erik quanstrom <quanstro@quanstro.net> wrote:
> A runtime system is just a library whose entry points are language
> keywords.[1]  In go, dynamic allocation, threads, channels, etc. are
> accessed via language features, so the libraries that implement those
> things are considered part of the RTS.  That's a terminological
> difference only from Plan 9 C, which has the same features[2] but
> accesses them through ordinary library entry points so the libraries
> that implement them aren't called `runtimes'.  But I think complaining
> about a library only because its entry point is a keyword is kind of
> silly.

i think this glosses over a key difference.  a runtime can do things
that are not invoked by function call.  the canonical example is
garbage collection.

- erik

An excellent example would also be the scheduling of goroutines.   I do not believe there's anything in the language specification that says that goroutines could not one day be pre-emptive.

Also, from this point of view, could pthreads be considered runtime for C?  Depends on the implementation I suppose.  You've got thread local storage, which is not handled by any explicit C code, but by a coordinated effort between the kernel and the pthreads library.  So the kernel is a C runtime too :-).

Dave