mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
Created AssemblyPolicy (markdown)
parent
eec5203096
commit
f7462336c2
17
AssemblyPolicy.md
Normal file
17
AssemblyPolicy.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Assembly Policy
|
||||||
|
|
||||||
|
This document describes when and how to add assembly code to routines in the Go-maintained packages.
|
||||||
|
|
||||||
|
In general, the rules are:
|
||||||
|
|
||||||
|
* we prefer portable Go, not assembly. Code in assembly means (N packages * M architectures) to maintain, rather than just N packages.
|
||||||
|
|
||||||
|
* assembly code needs benchmarks showing it's worth it
|
||||||
|
|
||||||
|
* minimize use of assembly. We'd rather have a small amount of assembly for a 50% speedup rather than twice as much assembly for a 55% speedup.
|
||||||
|
|
||||||
|
* make your assembly easy to review, and ideally auto-generated from a Go program so we can review the generator program. Comment it well.
|
||||||
|
|
||||||
|
* test it well. The bar for new assembly code is high. It needs commensurate test coverage.
|
||||||
|
|
||||||
|
*TODO*: add more. This document is a work in progress.
|
Loading…
x
Reference in New Issue
Block a user