Peter Collingbourne
02990bd494
go.tools/go/gccgoimporter: keep track of package and import priority
...
Clients such as compilers need this information in order
to correctly link against imported packages.
This also adds support for the condensed import data format
where the priority information is stored as a suffix of the
condensed import data, as well as support for archive files.
LGTM=gri
R=gri
CC=golang-codereviews, iant
https://golang.org/cl/78740043
2014-06-17 10:56:47 -07:00
Robert Griesemer
6770b5cdca
go.tools/go/importer: more cleanups
...
R=adonovan
CC=golang-codereviews
https://golang.org/cl/34660046
2014-01-03 09:12:32 -08:00
Robert Griesemer
10f0067eb1
go.tools/go.types: cleanups
...
Per feedback for CL 37250044.
R=adonovan
CC=golang-codereviews
https://golang.org/cl/47150043
2014-01-02 10:07:48 -08:00
Robert Griesemer
30645c4bc6
go.tools/go/importer: fine-tuning of export format, test against std lib
...
(TBR adonovan)
- provide version string rather than version number (more flexible)
- match naming of tag constants with documentation (forth-coming)
- more formats for constant values (1-byte booleans, short 64bit
values, support for floating point numbers +123p+45)
- more regular format for signatures: always print with type tag;
this permits (future) sharing of identical signatures and possibly
large export data size reduction
- test export and import of all type-checked std library packages
- compare import of all std library packages against corresponding
import of gc-generated export data and verify that the packages
match 100% (except for floating point values which are exact when
coming from go/types, and possibly inexact when coming from gc)
On average, export data generated by the importer is ~28% of the size
of the gc-generated export data for corresponding packages of the std
library:
package size gc size
archive/tar 2945 12030 24%
archive/zip 4122 15796 26%
bufio 1776 6171 28%
bytes 2540 8006 31%
compress/bzip2 146 419 34%
compress/flate 2305 6356 36%
compress/gzip 4262 17917 23%
compress/lzw 336 832 40%
compress/zlib 2503 9814 25%
container/heap 255 527 48%
container/list 653 2971 21%
container/ring 246 707 34%
crypto 368 1015 36%
crypto/aes 219 499 43%
crypto/cipher 809 1875 43%
crypto/des 254 636 39%
crypto/dsa 3324 15609 21%
crypto/ecdsa 3833 18567 20%
crypto/elliptic 3801 17417 21%
crypto/hmac 205 459 44%
crypto/md5 206 413 49%
crypto/rand 3070 15047 20%
crypto/rc4 180 443 40%
crypto/rsa 4205 17941 23%
crypto/sha1 208 414 50%
crypto/sha256 272 555 49%
crypto/sha512 274 555 49%
crypto/subtle 247 1157 21%
crypto/tls 13769 48330 28%
crypto/x509 10716 40556 26%
crypto/x509/pkix 5670 24616 23%
database/sql 4227 15957 26%
database/sql/driver 1239 2806 44%
debug/dwarf 5165 12066 42%
debug/elf 14205 36401 39%
debug/goobj 992 2495 39%
debug/gosym 1808 4798 37%
debug/macho 4560 13173 34%
debug/pe 3694 10530 35%
encoding 261 387 67%
encoding/ascii85 368 1541 23%
encoding/asn1 479 1661 28%
encoding/base32 608 2636 23%
encoding/base64 610 2636 23%
encoding/binary 1006 3591 28%
encoding/csv 2287 8405 27%
encoding/gob 9161 30565 29%
encoding/hex 384 1331 28%
encoding/json 6564 23334 28%
encoding/pem 208 529 39%
encoding/xml 7964 27220 29%
errors 52 277 18%
expvar 955 2978 32%
flag 2475 18028 13%
fmt 1141 3141 36%
go/ast 11595 41019 28%
go/build 3736 13920 26%
go/doc 2647 9523 27%
go/format 1310 5010 26%
go/parser 4346 18525 23%
go/printer 1737 6442 26%
go/scanner 2360 8598 27%
go/token 2290 7599 30%
hash 215 595 36%
hash/adler32 217 391 55%
hash/crc32 399 1475 27%
hash/crc64 324 1327 24%
hash/fnv 338 3964 8%
html 80 253 31%
html/template 7981 37471 21%
image 4270 18894 22%
image/color 845 3154 26%
image/color/palette 121 319 37%
image/draw 947 4807 19%
image/gif 1468 6611 22%
image/jpeg 971 4534 21%
image/png 880 4432 19%
index/suffixarray 3702 13960 26%
io 2049 6117 33%
io/ioutil 2845 12060 23%
log 2416 10241 23%
log/syslog 3102 12208 25%
math 2361 6008 39%
math/big 3648 12250 29%
math/cmplx 473 1542 30%
math/rand 786 2002 39%
mime 180 595 30%
mime/multipart 2761 9338 29%
net 10593 34352 30%
net/http 24542 84065 29%
net/http/cgi 12859 50970 25%
net/http/cookiejar 2845 12429 22%
net/http/fcgi 12331 49111 25%
net/http/httptest 18953 75243 25%
net/http/httputil 13994 54386 25%
net/http/pprof 12153 49039 24%
net/mail 1803 8599 20%
net/rpc 18503 69044 26%
net/rpc/jsonrpc 1063 2737 38%
net/smtp 11775 46821 25%
net/textproto 2684 8678 30%
net/url 767 2886 26%
os 5712 20293 28%
os/exec 4705 18350 25%
os/signal 125 330 37%
os/user 234 720 32%
path 231 770 30%
path/filepath 2236 9721 23%
reflect 4518 13467 33%
regexp 3608 11167 32%
regexp/syntax 2184 5157 42%
runtime 1563 3407 45%
runtime/cgo 36 66 54%
runtime/debug 1714 8010 21%
runtime/pprof 485 1358 35%
runtime/race 38 43 88%
sort 748 2658 28%
strconv 949 2573 36%
strings 1846 6220 29%
sync 712 1970 36%
sync/atomic 1089 2506 43%
syscall 38975 79396 49%
testing 3734 13626 27%
testing/iotest 332 2378 13%
testing/quick 4411 16434 26%
text/scanner 1821 5349 34%
text/tabwriter 1593 4937 32%
text/template 6882 33329 20%
text/template/parse 3946 12760 30%
time 3031 9703 31%
unicode 3148 8676 36%
unicode/utf16 163 760 21%
unicode/utf8 475 1122 42%
total 463641 1644936 28%
R=adonovan
TBR=adonovan
CC=golang-codereviews
https://golang.org/cl/37250044
2013-12-20 16:43:31 -08:00
Robert Griesemer
a02c76070b
go/importer: fix build (disable tests that won't run on builders)
...
R=adonovan
TBR=adonovan
CC=golang-dev
https://golang.org/cl/43010043
2013-12-16 14:44:22 -08:00
Robert Griesemer
5eb4fdc120
go.tools/go/importer: simplified exporter/importer
...
By using a simple (graph-based) serialization algorithm
and binary encoding, a significantly more compact export
data format is achieved than what the current compilers
use. Furthermore, the exporter and importer are completely
symmetric algorithms that are compact, and much easier to
change/expand.
R=adonovan
CC=golang-dev
https://golang.org/cl/42960043
2013-12-16 14:28:17 -08:00