Robert Griesemer [Mon, 6 Dec 2010 22:23:18 +0000 (14:23 -0800)]
go/ast: use token.Pos instead of token.Position; adjust all dependent code
Specifically:
* lib/godoc:
- provide file set (FSet) argument to formatters where needed
* src/cmd:
- cgo, ebnflint, godoc, gofmt, goinstall: provide file set (fset) where needed
- godoc: remove local binary search with sort.Search (change by rsc),
extract file set for formatters
* src/pkg:
- exp/eval: remove embedded token.Position fields from nodes and replace
with named token.Pos fields; add corresponding Pos() accessor methods
- go/token: added file.Line(), changed signature of File.Position()
* test/fixedbugs/:
- bug206.go: change test to not rely on token.Pos details
* added various extra comments
* Runs all.bash
* gofmt formats all of src, misc w/o changes
* godoc runs
* performance:
- The new version of godoc consumes about the same space after indexing
has completed, but indexing is half the speed. Significant space savings
are expected from smaller ASTs, but since they are thrown away after a
file has been indexed, this is not visible anymore. The slower indexing
time is due to the much more expensive computation of line information.
However, with the new compressed position information, indexing can be
rewritten and simplified. Furthermore, computing the line info can be
done more efficiently.
New godoc, immediately after indexing completed (best of three runs):
The different numbers for unique words/spots stem from the fact the the
two workspaces are not exactly identical. The new godoc maintains a large
file set data structure during indexing which (probably) is the reason
for the larger heap (90858456 vs 66404528) before garbage collection.
R=rsc, r
CC=golang-dev
https://golang.org/cl/3050041
Yuval Pavel Zholkover [Mon, 6 Dec 2010 21:38:28 +0000 (16:38 -0500)]
8l, runtime: fix Plan 9 386 build.
8l was broken by commit 7ac0d2eed9, it caused .data to be page aligned in the file - which is not how Plan 9 expects things to be.
Also .rodata was layed out in a similar fashion.
Not sure when signame was introduced, but added a stub.
Removed the symo assignment in asm.c as it is not currently used.
Fix runtime breakage after commit 629c065d36 which prefixes all external symbols with runtime·.
Russ Cox [Mon, 6 Dec 2010 21:31:59 +0000 (16:31 -0500)]
LICENSE: separate, change PATENTS text
Split patent grant clause out of LICENSE file
and update text to be more like that used by WebM.
These changes should make Go more acceptable
to the Fedora project and they are acceptable to the FSF.
Rob Pike [Mon, 6 Dec 2010 19:23:37 +0000 (14:23 -0500)]
fmt: add %U format for standard Unicode representation of integer values.
fmt.Printf("%U", 1) yields "U+0001"
It's essentially "U+%.4x" but lets you override the precision works in scan, too.
Robert Griesemer [Thu, 2 Dec 2010 20:32:14 +0000 (12:32 -0800)]
go_spec: fixed a couple omissions/type errors
- use math.Sqrt instead of Math.sqrt
- use float64 for Point fields to match math.Sqrt
- distinguish between Point and Point3D for clarity
- add alignment sizes for complex types
Rob Pike [Thu, 2 Dec 2010 01:10:40 +0000 (17:10 -0800)]
template: implement multi-word variable instantation for formatters.
Before one could say
{field}
or
{field|formatter}
Now one can also say
{field1 field2 field3}
or
{field1 field2 field3|formatter}
and the fields are passed as successive arguments to the formatter,
analogous to fmt.Print.
Rob Pike [Wed, 1 Dec 2010 21:33:49 +0000 (13:33 -0800)]
template: change the signature of formatters for future development.
Make them more like Printf, with a ... final argument. This breaks
code with existing formatters but not the templates that use them.
Kyle Consalus [Wed, 1 Dec 2010 19:59:13 +0000 (11:59 -0800)]
Removed bytes.Add and bytes.AddByte; we now have 'append'.
Changed all uses of bytes.Add (aside from those testing bytes.Add) to append(a, b...).
Also ran "gofmt -s" and made use of copy([]byte, string) in the fasta benchmark.
Adam Langley [Fri, 19 Nov 2010 19:12:07 +0000 (14:12 -0500)]
crypto/cipher: add package
cipher is intended to replace crypto/block over time. This
change only adds basic parts: CBC and CTR mode and doesn't add
the package to the top-level Makefile.
Robert Griesemer [Sat, 13 Nov 2010 00:39:33 +0000 (16:39 -0800)]
token/position: implemented Pos
A pos value represents a file-set specific, accurate
source position value. It is 8x smaller in size than
the corresponding Position value (4 bytes vs 32 bytes).
Using Pos values instead of Position values in AST
saves approx. 25MBytes of memory when running godoc
on the current repository.
This CL introduces the Pos, File, and FileSet data
types; it does not affect existing code. Another
(pending CL) will make the change to all dependent
source files.
Benny Siegert [Fri, 12 Nov 2010 20:47:50 +0000 (12:47 -0800)]
strings: add LastIndexAny
The need for a LastIndexAny function has come up in the discussion
for https://golang.org/cl/3008041/. This function is
implemented analogously to lastIndexFunc, using functions from
the utf8 package.
Adam Langley [Thu, 11 Nov 2010 20:50:40 +0000 (15:50 -0500)]
crypto/x509: policy OID support and fixes.
* Add support for certificate policy identifiers
* Fix the version number of generated certificates
* Fix the parsing of version numbers
* Fix the case of multiple name entries (it should have been a list of
tagged values, not a tagged list of values).
Ian Lance Taylor [Wed, 10 Nov 2010 21:25:49 +0000 (13:25 -0800)]
path: Fix Glob when it finds a file in directory position.
When searching a list of directories, the files which match
the pattern are accumulated in a slice. If the glob has a
wildcard for the directory, and the wildcard matches a file
rather than a directory, then the files found so far are
discarded. E.g., path.Glob("*/x") in a directory which
contains both files and subdirectories. This patch avoids
discarding matches found so far when a file is found.