mirror of
https://github.com/golang/go
synced 2024-11-21 18:54:43 -07:00
docs: make "runtime" a word only as a name for the package.
Computer people have an agglutinating streak that I like to resist. As a time of execution: run time. As an adjective: run-time. As a noun: run-time support/code/library. Signed, Mr. Pedant. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/4252048
This commit is contained in:
parent
a77744f488
commit
966bf71366
@ -45,7 +45,7 @@ a <code>gcc-interface</code> subdirectory.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The runtime library for <code>gccgo</code> is mostly the same as the
|
The run-time library for <code>gccgo</code> is mostly the same as the
|
||||||
library in <a href="http://code.google.com/p/go">the main Go
|
library in <a href="http://code.google.com/p/go">the main Go
|
||||||
repository</a>. The library code in the Go repository is periodically
|
repository</a>. The library code in the Go repository is periodically
|
||||||
copied into the <code>gofrontend</code> and the <code>gcc</code>
|
copied into the <code>gofrontend</code> and the <code>gcc</code>
|
||||||
|
@ -116,7 +116,7 @@ gccgo -o file file.o
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
To run the resulting file, you will need to tell the program where to
|
To run the resulting file, you will need to tell the program where to
|
||||||
find the Go runtime library. This can be done either by setting
|
find the compiled Go packages. This can be done either by setting
|
||||||
<code>LD_LIBRARY_PATH</code> in your environment:
|
<code>LD_LIBRARY_PATH</code> in your environment:
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
|
@ -730,7 +730,7 @@ Why doesn't my multi-goroutine program use multiple CPUs?</h3>
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
Under the gc compilers you must set <code>GOMAXPROCS</code> to allow the
|
Under the gc compilers you must set <code>GOMAXPROCS</code> to allow the
|
||||||
runtime to utilise more than one OS thread. Under <code>gccgo</code> an OS
|
run-time support to utilise more than one OS thread. Under <code>gccgo</code> an OS
|
||||||
thread will be created for each goroutine, and <code>GOMAXPROCS</code> is
|
thread will be created for each goroutine, and <code>GOMAXPROCS</code> is
|
||||||
effectively equal to the number of running goroutines.
|
effectively equal to the number of running goroutines.
|
||||||
</p>
|
</p>
|
||||||
@ -738,7 +738,7 @@ effectively equal to the number of running goroutines.
|
|||||||
<p>
|
<p>
|
||||||
Programs that perform concurrent computation should benefit from an increase in
|
Programs that perform concurrent computation should benefit from an increase in
|
||||||
<code>GOMAXPROCS</code>. (See the <a
|
<code>GOMAXPROCS</code>. (See the <a
|
||||||
href="http://golang.org/pkg/runtime/#GOMAXPROCS">runtime package
|
href="http://golang.org/pkg/runtime/#GOMAXPROCS"><code>runtime</code> package's
|
||||||
documentation</a>.)
|
documentation</a>.)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -759,8 +759,8 @@ penalty involved in sending data between threads.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The Go runtime's scheduler is not as good as it needs to be. In future, it
|
Go's goroutine scheduler is not as good as it needs to be. In future, it
|
||||||
should recognise such cases and optimize its use of OS threads. For now,
|
should recognize such cases and optimize its use of OS threads. For now,
|
||||||
<code>GOMAXPROCS</code> should be set on a per-application basis.
|
<code>GOMAXPROCS</code> should be set on a per-application basis.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -942,13 +942,13 @@ parser are already available in <a href="/pkg/go/"><code>/pkg/go</code></a>.)
|
|||||||
We also considered using LLVM for <code>6g</code> but we felt it was too large and
|
We also considered using LLVM for <code>6g</code> but we felt it was too large and
|
||||||
slow to meet our performance goals.
|
slow to meet our performance goals.
|
||||||
|
|
||||||
<h3 id="How_is_the_runtime_implemented">
|
<h3 id="How_is_the_run_time_support_implemented">
|
||||||
How is the runtime implemented?</h3>
|
How is the run-time support implemented?</h3>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Again due to bootstrapping issues, the runtime is mostly in C (with a
|
Again due to bootstrapping issues, the run-time code is mostly in C (with a
|
||||||
tiny bit of assembler) although Go is capable of implementing most of
|
tiny bit of assembler) although Go is capable of implementing most of
|
||||||
it now. <code>Gccgo</code>'s runtime uses <code>glibc</code>.
|
it now. <code>Gccgo</code>'s run-time support uses <code>glibc</code>.
|
||||||
<code>Gc</code> uses a custom library, to keep the footprint under
|
<code>Gc</code> uses a custom library, to keep the footprint under
|
||||||
control; it is
|
control; it is
|
||||||
compiled with a version of the Plan 9 C compiler that supports
|
compiled with a version of the Plan 9 C compiler that supports
|
||||||
@ -968,7 +968,7 @@ type checks, reflection, and even panic-time stack traces.
|
|||||||
<p>
|
<p>
|
||||||
A trivial C "hello, world" program compiled and linked statically using gcc
|
A trivial C "hello, world" program compiled and linked statically using gcc
|
||||||
on Linux is around 750 kB. An equivalent Go program is around 1.8 MB, but
|
on Linux is around 750 kB. An equivalent Go program is around 1.8 MB, but
|
||||||
that includes a more powerful runtime. We believe that with some effort
|
that includes more powerful run-time support. We believe that with some effort
|
||||||
the size of Go binaries can be reduced.
|
the size of Go binaries can be reduced.
|
||||||
|
|
||||||
<h2 id="Performance">Performance</h2>
|
<h2 id="Performance">Performance</h2>
|
||||||
|
@ -555,7 +555,7 @@ When you want the equivalent of a virtual function, use an interface.
|
|||||||
A variable which has an interface type may be converted to have a
|
A variable which has an interface type may be converted to have a
|
||||||
different interface type using a special construct called a type assertion.
|
different interface type using a special construct called a type assertion.
|
||||||
This is implemented dynamically
|
This is implemented dynamically
|
||||||
at runtime, like C++ <code>dynamic_cast</code>. Unlike
|
at run time, like C++ <code>dynamic_cast</code>. Unlike
|
||||||
<code>dynamic_cast</code>, there does
|
<code>dynamic_cast</code>, there does
|
||||||
not need to be any declared relationship between the two interfaces.
|
not need to be any declared relationship between the two interfaces.
|
||||||
|
|
||||||
@ -589,7 +589,7 @@ must unbox using a type assertion to recover
|
|||||||
values of the contained type. As the typing is dynamic rather
|
values of the contained type. As the typing is dynamic rather
|
||||||
than static, there is no equivalent of the way that a C++ template may
|
than static, there is no equivalent of the way that a C++ template may
|
||||||
inline the relevant operations. The operations are fully type-checked
|
inline the relevant operations. The operations are fully type-checked
|
||||||
at runtime, but all operations will involve a function call.
|
at run time, but all operations will involve a function call.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
type iterator interface {
|
type iterator interface {
|
||||||
|
@ -4698,7 +4698,7 @@ func protect(g func()) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
log.Println("done") // Println executes normally even in there is a panic
|
log.Println("done") // Println executes normally even in there is a panic
|
||||||
if x := recover(); x != nil {
|
if x := recover(); x != nil {
|
||||||
log.Printf("runtime panic: %v", x)
|
log.Printf("run time panic: %v", x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Println("start")
|
log.Println("start")
|
||||||
|
@ -54,7 +54,7 @@ architectures.
|
|||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Except for things like low-level operating system interface code, the runtime
|
Except for things like low-level operating system interface code, the run-time
|
||||||
support is the same in all ports and includes a mark-and-sweep garbage collector
|
support is the same in all ports and includes a mark-and-sweep garbage collector
|
||||||
(a fancier one is in the works), efficient array and string slicing,
|
(a fancier one is in the works), efficient array and string slicing,
|
||||||
support for segmented stacks, and a strong goroutine implementation.
|
support for segmented stacks, and a strong goroutine implementation.
|
||||||
@ -419,9 +419,9 @@ to override the defaults.
|
|||||||
<code>$GOARM</code> (arm, default=6)
|
<code>$GOARM</code> (arm, default=6)
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
The ARM architecture version the runtime libraries should target.
|
The ARM architecture version the run-time libraries should target.
|
||||||
ARMv6 cores have more efficient synchronization primitives. Setting
|
ARMv6 cores have more efficient synchronization primitives. Setting
|
||||||
<code>$GOARM</code> to 5 will compile the runtime libraries using
|
<code>$GOARM</code> to 5 will compile the run-time libraries using
|
||||||
just SWP instructions that work on older architectures as well.
|
just SWP instructions that work on older architectures as well.
|
||||||
Running v6 code on an older core will cause an illegal instruction trap.
|
Running v6 code on an older core will cause an illegal instruction trap.
|
||||||
</dd>
|
</dd>
|
||||||
|
Loading…
Reference in New Issue
Block a user