mirror of https://github.com/golang/go.git
578 lines
19 KiB
HTML
578 lines
19 KiB
HTML
<!--{
|
|
"Title": "Go 1.2 Release Notes",
|
|
"Path": "/doc/go1.2",
|
|
"Template": true
|
|
}-->
|
|
|
|
<h2 id="introduction">Introduction to Go 1.2</h2>
|
|
|
|
<p>
|
|
RED TEXT IS FROM THE 1.1 DOC AND NEEDS TO BE UPDATED. (It is here for
|
|
formatting and style reference.)
|
|
<p>
|
|
<font color=red>
|
|
The release of <a href="/doc/go1.html">Go version 1</a> (Go 1 or Go 1.0 for short)
|
|
in March of 2012 introduced a new period
|
|
of stability in the Go language and libraries.
|
|
That stability has helped nourish a growing community of Go users
|
|
and systems around the world.
|
|
Several "point" releases since
|
|
then—1.0.1, 1.0.2, and 1.0.3—have been issued.
|
|
These point releases fixed known bugs but made
|
|
no non-critical changes to the implementation.
|
|
</font>
|
|
</p>
|
|
|
|
<p>
|
|
<font color=red>
|
|
This new release, Go 1.1, keeps the <a href="/doc/go1compat.html">promise
|
|
of compatibility</a> but adds a couple of significant
|
|
(backwards-compatible, of course) language changes, has a long list
|
|
of (again, compatible) library changes, and
|
|
includes major work on the implementation of the compilers,
|
|
libraries, and run-time.
|
|
The focus is on performance.
|
|
Benchmarking is an inexact science at best, but we see significant,
|
|
sometimes dramatic speedups for many of our test programs.
|
|
We trust that many of our users' programs will also see improvements
|
|
just by updating their Go installation and recompiling.
|
|
</font>
|
|
</p>
|
|
|
|
<p>
|
|
<font color=red>
|
|
This document summarizes the changes between Go 1 and Go 1.2.
|
|
Very little if any code will need modification to run with Go 1.1,
|
|
although a couple of rare error cases surface with this release
|
|
and need to be addressed if they arise.
|
|
Details appear below; see the discussion of XXX.
|
|
</font>
|
|
</p>
|
|
|
|
<h2 id="language">Changes to the language</h2>
|
|
|
|
<p>
|
|
<font color=red>
|
|
<a href="/doc/go1compat.html">The Go compatibility document</a> promises
|
|
that programs written to the Go 1 language specification will continue to operate,
|
|
and those promises are maintained.
|
|
In the interest of firming up the specification, though, there are
|
|
details about some error cases that have been clarified.
|
|
There are also some new language features.
|
|
</font>
|
|
</p>
|
|
|
|
<h3 id="threeindex">Three-index slices</h3>
|
|
|
|
<p>
|
|
cmd/gc: three-index slicing to set cap as well as length (CL 10743046).
|
|
</p>
|
|
|
|
|
|
<h2 id="impl">Changes to the implementations and tools</h2>
|
|
|
|
<ul>
|
|
<li>
|
|
runtime: preemption of goroutines at function entry (CL 12371043).
|
|
</li>
|
|
|
|
<li>
|
|
go/build: support including C++ code with cgo (CL 8248043).
|
|
</li>
|
|
</ul>
|
|
|
|
<h3 id="gccgo">Status of gccgo</h3>
|
|
|
|
<p>
|
|
<font color=red>
|
|
The GCC release schedule does not coincide with the Go release schedule, so some skew is inevitable in
|
|
<code>gccgo</code>'s releases.
|
|
The 4.8.0 version of GCC shipped in March, 2013 and includes a nearly-Go 1.1 version of <code>gccgo</code>.
|
|
Its library is a little behind the release, but the biggest difference is that method values are not implemented.
|
|
Sometime around July 2013, we expect 4.8.2 of GCC to ship with a <code>gccgo</code>
|
|
providing a complete Go 1.1 implementaiton.
|
|
</font>
|
|
</p>
|
|
|
|
<h3 id="gc_changes">TODO</h3>
|
|
|
|
<p>
|
|
TODO: write prose
|
|
</p>
|
|
|
|
<ul>
|
|
<li>cmd/5a: removed support for R9/R10 (use m/g instead) (CL 9840043).
|
|
</li>
|
|
|
|
<li>cmd/5l: add MOVBS, MOVHS etc for sub-word moves (CL 12682043).
|
|
</li>
|
|
|
|
<li>cmd/5l: support for external linking for linux/arm (CL 12871044).
|
|
</li>
|
|
|
|
<li>cmd/cgo, cmd/go: support including C++ code with cgo (CL 8248043).
|
|
</li>
|
|
|
|
<li>cmd/gc: make missing package error fatal (CL 12677043).
|
|
</li>
|
|
</ul>
|
|
|
|
<h3 id="gocmd">Changes to the go command</h3>
|
|
|
|
<ul>
|
|
<li>cmd/go: test coverage (CL 10413044).
|
|
</li>
|
|
|
|
<li>cmd/go: add -t flag to 'go get' to download test dependencies (CL 12566046).
|
|
</li>
|
|
|
|
<li>cmd/go: delete 'go doc' (CL 12974043).
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
<h3 id="platforms">Additional platforms</h3>
|
|
|
|
<p>
|
|
<font color=red>
|
|
The Go 1.1 tool chain adds experimental support for <code>freebsd/arm</code>,
|
|
<code>netbsd/386</code>, <code>netbsd/amd64</code>, <code>netbsd/arm</code>,
|
|
<code>openbsd/386</code> and <code>openbsd/amd64</code> platforms.
|
|
</font>
|
|
</p>
|
|
|
|
<p>
|
|
<font color=red>
|
|
An ARMv6 or later processor is required for <code>freebsd/arm</code> or
|
|
<code>netbsd/arm</code>.
|
|
</font>
|
|
</p>
|
|
|
|
<p>
|
|
<font color=red>
|
|
Go 1.1 adds experimental support for <code>cgo</code> on <code>linux/arm</code>.
|
|
</font>
|
|
</p>
|
|
|
|
<h2 id="performance">Performance</h2>
|
|
|
|
<p>
|
|
<font color=red>
|
|
The performance of code compiled with the Go 1.1 gc tool suite should be noticeably
|
|
better for most Go programs.
|
|
Typical improvements relative to Go 1.0 seem to be about 30%-40%, sometimes
|
|
much more, but occasionally less or even non-existent.
|
|
There are too many small performance-driven tweaks through the tools and libraries
|
|
to list them all here, but the following major changes are worth noting:
|
|
</font>
|
|
</p>
|
|
|
|
<ul>
|
|
<li>compress/bzip2: faster decompression by 30% (CL 9915043).
|
|
</li>
|
|
|
|
<li>crypto/des: 5x faster encoding/decoding (CL 11874043, 12072045).
|
|
</li>
|
|
|
|
<li>encoding/json: faster encoding (CL 9129044).
|
|
</li>
|
|
|
|
<li>net: improve windows performance by up to 30% (CL 8670044).
|
|
</li>
|
|
|
|
<li>net: improve performance on BSD by up to 30% (CL 8264043, 12927048, 13080043).
|
|
</li>
|
|
</ul>
|
|
|
|
<h2 id="library">Changes to the standard library</h2>
|
|
|
|
<h3 id="foo_bar">foo.Bar</h3>
|
|
|
|
<p>
|
|
TODO: choose which to call out
|
|
<font color=red>
|
|
The various routines to scan textual input in the
|
|
<a href="/pkg/bufio/"><code>bufio</code></a>
|
|
package,
|
|
<a href="/pkg/bufio/#Reader.ReadBytes"><code>ReadBytes</code></a>,
|
|
<a href="/pkg/bufio/#Reader.ReadString"><code>ReadString</code></a>
|
|
and particularly
|
|
<a href="/pkg/bufio/#Reader.ReadLine"><code>ReadLine</code></a>,
|
|
are needlessly complex to use for simple purposes.
|
|
In Go 1.1, a new type,
|
|
<a href="/pkg/bufio/#Scanner"><code>Scanner</code></a>,
|
|
has been added to make it easier to do simple tasks such as
|
|
read the input as a sequence of lines or space-delimited words.
|
|
It simplifies the problem by terminating the scan on problematic
|
|
input such as pathologically long lines, and having a simple
|
|
default: line-oriented input, with each line stripped of its terminator.
|
|
Here is code to reproduce the input a line at a time:
|
|
</font>
|
|
|
|
<p>
|
|
<font color=red>
|
|
<em>Updating</em>:
|
|
To correct breakage caused by the new struct field,
|
|
<code>go fix</code> will rewrite code to add tags for these types.
|
|
More generally, <code>go vet</code> will identify composite literals that
|
|
should be revised to use field tags.
|
|
</font>
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
Breaking change:
|
|
archive/tar,archive/zip: fix os.FileInfo implementation to provide base name only (CL 13118043).
|
|
</li>
|
|
|
|
<li>
|
|
fmt: indexed access to arguments in Printf etc. (CL 9680043).
|
|
</li>
|
|
|
|
<li>
|
|
encoding: new package defining generic encoding interfaces (CL 12541051).
|
|
</li>
|
|
|
|
<li>
|
|
sync/atomic: add Swap functions (CL 12670045).
|
|
</li>
|
|
<li>
|
|
text/template: add comparison functions (CL 13091045).
|
|
</li>
|
|
|
|
<li>
|
|
text/template: allow {{"{{"}}else if ... {{"}}"}} to simplify if chains (CL 13327043).
|
|
</li>
|
|
</ul>
|
|
|
|
<h3 id="exp_old">Exp and old subtrees moved to go.exp and go.text subrepositories</h3>
|
|
|
|
<p>
|
|
<font color=red>
|
|
To make it easier for binary distributions to access them if desired, the <code>exp</code>
|
|
and <code>old</code> source subtrees, which are not included in binary distributions,
|
|
have been moved to the new <code>go.exp</code> subrepository at
|
|
<code>code.google.com/p/go.exp</code>. To access the <code>ssa</code> package,
|
|
for example, run
|
|
</font>
|
|
</p>
|
|
|
|
<h3 id="new_packages">New packages</h3>
|
|
|
|
<p>
|
|
<font color=red>
|
|
There are three new packages.
|
|
</font>
|
|
</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<font color=red>
|
|
The <a href="/pkg/go/format/"><code>go/format</code></a> package provides
|
|
a convenient way for a program to access the formatting capabilities of the
|
|
<a href="/cmd/go/#hdr-Run_gofmt_on_package_sources"><code>go fmt</code></a> command.
|
|
It has two functions,
|
|
<a href="/pkg/go/format/#Node"><code>Node</code></a> to format a Go parser
|
|
<a href="/pkg/go/ast/#Node"><code>Node</code></a>,
|
|
and
|
|
<a href="/pkg/go/format/#Source"><code>Source</code></a>
|
|
to reformat arbitrary Go source code into the standard format as provided by the
|
|
<a href="/cmd/go/#hdr-Run_gofmt_on_package_sources"><code>go fmt</code></a> command.
|
|
</font>
|
|
</li>
|
|
</ul>
|
|
|
|
<h3 id="minor_library_changes">Minor changes to the library</h3>
|
|
|
|
<p>
|
|
The following list summarizes a number of minor changes to the library, mostly additions.
|
|
See the relevant package documentation for more information about each change.
|
|
</p>
|
|
|
|
<ul>
|
|
|
|
<li>
|
|
The <a href="/pkg/archive/zip/"><code>archive/zip</code></a> package
|
|
adds the
|
|
<a href="/pkg/archive/zip/#File.DataOffset"><code>DataOffset</code></a> accessor
|
|
to return the offset of a file's (possibly compressed) data within the archive.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/bufio/"><code>bufio</code></a> package
|
|
adds <a href="/pkg/bufio/#Reader.Reset"><code>Reset</code></a>
|
|
methods to <a href="/pkg/bufio/#Reader"><code>Reader</code></a> and
|
|
<a href="/pkg/bufio/#Writer"><code>Writer</code></a>.
|
|
These methods allow the <a href="/pkg/Reader/"><code>Readers</code></a>
|
|
and <a href="/pkg/Writer/"><code>Writers</code></a>
|
|
to be re-used on new input and output readers and writers, saving
|
|
allocation overhead.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/compress/bzip2/"><code>compress/bzip2</code></a>
|
|
can now decompress concatenated archives.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/compress/flate/"><code>compress/flate</code></a>
|
|
package adds a <a href="/pkg/compress/flate/#Reset"><code>Reset</code></a>
|
|
method on the <a href="/pkg/compress/flate/#Writer"><code>Writer</code></a>,
|
|
allowing compression of one file to start with another's dictionary.
|
|
</li>
|
|
|
|
<li>
|
|
compress/gzip: add Reset method on Writer (CL 13435043).
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/container/heap/"><code>container/heap</code></a> package
|
|
adds a <a href="/pkg/container/heap/#Fix"><code>Fix</code></a>
|
|
method to provide a more efficient way to update an item's position in the heap.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/container/list/"><code>container/list</code></a> package
|
|
adds the <a href="/pkg/container/list/#MoveBefore"><code>MoveBefore</code></a>
|
|
and
|
|
<a href="/pkg/container/list/#MoveAfter"><code>MoveAfter</code></a>
|
|
methods, which implement the obvious rearrangement.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/crypto/cipher/"><code>crypto/cipher</code></a> package
|
|
adds the a new GCM mode (Galois Counter Mode), which is almost always
|
|
used with AES encryption.
|
|
</li>
|
|
|
|
<li>
|
|
The
|
|
<a href="/pkg/crypto/md5/"><code>crypto/md5</code></a> package
|
|
adds a new <a href="/pkg/crypto/md5/#Sum"><code>Sum</code></a> function
|
|
to simplify hashing without sacrificing performance.
|
|
</li>
|
|
|
|
<li>
|
|
Similarly, the
|
|
<a href="/pkg/crypto/md5/"><code>crypto/sha1</code></a> package
|
|
adds a new <a href="/pkg/crypto/sha1/#Sum"><code>Sum</code></a> function.
|
|
</li>
|
|
|
|
<li>
|
|
Also, the
|
|
<a href="/pkg/crypto/sha256/"><code>crypto/sha256</code></a> package
|
|
adds <a href="/pkg/crypto/sha256/#Sum256"><code>Sum256</code></a>
|
|
and <a href="/pkg/crypto/sha256/#Sum224"><code>Sum224</code></a> functions.
|
|
</li>
|
|
|
|
<li>
|
|
Finally, the <a href="/pkg/crypto/sha512/"><code>crypto/sha512</code></a> package
|
|
adds <a href="/pkg/crypto/sha512/#Sum512"><code>Sum512</code></a> and
|
|
<a href="/pkg/crypto/sha512/#Sum384"><code>Sum384</code></a> functions.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/crypto/x509/"><code>crypto/x509</code></a> package
|
|
adds support for reading and writing arbitrary extensions.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package adds
|
|
support for TLS 1.1, 1.2 and AES-GCM.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/database/sql/"><code>database/sql</code></a> package adds a
|
|
<a href="/pkg/database/sql/#DB.SetMaxOpenConns"><code>SetMaxOpenConns</code></a>
|
|
method on <a href="/pkg/database/sql/#DB"><code>DB</code></a> to limit the
|
|
number of open connections to the database.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/encoding/csv/"><code>encoding/csv</code></a> package
|
|
now always allows trailing commas on fields.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a> package
|
|
now supports the generic encoding interfaces of the
|
|
<a href="/pkg/encoding/"><code>encoding</code></a> package
|
|
described above.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/encoding/json/"><code>encoding/json</code></a> package
|
|
now will alway escape ampersands as "\u0026" when printing strings.
|
|
It will now accept but correct invalid UTF-8 in
|
|
<a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a>
|
|
(such input was previously rejected).
|
|
Finally, it now supports the generic encoding interfaces of the
|
|
<a href="/pkg/encoding/"><code>encoding</code></a> package
|
|
described above.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> package
|
|
now allows attributes stored in pointers to be marshaled.
|
|
It also supports the generic encoding interfaces of the
|
|
<a href="/pkg/encoding/"><code>encoding</code></a> package
|
|
described above through the new
|
|
<a href="/pkg/encoding/xml/#Marshaler"><code>Marshaler</code></a>,
|
|
<a href="/pkg/encoding/xml/#UnMarshaler"><code>UnMarshaler</code></a>,
|
|
and related
|
|
<a href="/pkg/encoding/xml/#MarshalerAttr"><code>MarshalerAttr</code></a> and
|
|
<a href="/pkg/encoding/xml/#UnmarshalerAttr"><code>UnmarshalerAttr</code></a>
|
|
interfaces.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/flag/"><code>flag</code></a> package now
|
|
has a <a href="/pkg/flag/#Getter"><code>Getter</code></a> interface
|
|
to allow the value of a flag to be retrieved. Due to the
|
|
Go 1 compatibility guidelines, this method cannot be added to the existing
|
|
<a href="/pkg/flag/#Value"><code>Value</code></a>
|
|
interface, but all the existing standard flag types implement it.
|
|
The package also now exports the <a href="/pkg/flag/#CommandLine"><code>CommandLine</code></a>
|
|
flag set, which holds the flags from the command line.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/go/build/"><code>go/build</code></a> package adds
|
|
the <a href="/pkg/go/build/#Package.AllTags"><code>AllTags</code></a> field
|
|
to the <a href="/pkg/go/build/#Package"><code>Package</code></a> type,
|
|
to make it easier to process build tags.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/image/draw/"><code>image/draw</code></a> package now
|
|
exports an interface, <a href="/pkg/image/draw/#Drawer"><code>Drawer</code></a>,
|
|
that wraps the standard <a href="/pkg/image/draw/#Draw"><code>Draw</code></a> method.
|
|
The Porter-Duff operators now implement this interface, in effect binding an operation to
|
|
the draw operator rather than providing it explicitly.
|
|
Given a paletted image as its destination, the new
|
|
<a href="/pkg/image/draw/#FloydSteinberg"><code>FloydSteinberg</code></a>
|
|
implementation of the
|
|
<a href="/pkg/image/draw/#Drawer"><code>Drawer</code></a>
|
|
interface will use the Floyd-Steinberg error diffusion algorithm to draw the image.
|
|
To create palettes suitable for such processing, the new
|
|
<a href="/pkg/image/draw/#Quantizer"><code>Quantizer</code></a> interface
|
|
represents implementations of quantization algorithms that choose a palette
|
|
given a full-color image.
|
|
There are no implementations of this interface in the library.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/image/gif/"><code>image/gif</code></a> package
|
|
can now create GIF files using the new
|
|
<a href="/pkg/image/gif/#Encode"><code>Encode</code></a>
|
|
and <a href="/pkg/image/gif/#EncodeAll"><code>EncodeAll</code></a>
|
|
functions.
|
|
Their options argument allows specification of an image
|
|
<a href="/pkg/image/draw/#Quantizer"><code>Quantizer</code></a> to use;
|
|
if it is <code>nil</code>, the generated GIF will use the
|
|
<a href="/pkg/image/color/palette/#Plan9"><code>Plan9</code></a>
|
|
color map (palette) defined in the new
|
|
<a href="/pkg/image/color/palette/"><code>image/color/palette</code></a> package.
|
|
The options also specify a
|
|
<a href="/pkg/image/draw/#Drawer"><code>Drawer</code></a>
|
|
to use to create the output image;
|
|
if it is <code>nil</code>, Floyd-Steinberg error diffusion is used.
|
|
</li>
|
|
|
|
<li>
|
|
The<a href="/pkg/io/#Copy"><code>Copy</code></a> method of the
|
|
<a href="/pkg/io/"><code>io</code></a> package now prioritizes its
|
|
arguments differently.
|
|
If one argument implements <a href="/pkg/io/#WriterTo"><code>WriterTo</code></a>
|
|
and the other implements i<a href="/pkg/o/#ReaderFrom"><code>ReaderFrom</code></a>,
|
|
<a href="/pkg/io/#Copy"><code>Copy</code></a> will now invoke
|
|
<a href="/pkg/io/#WriterTo"><code>WriterTo</code></a> to do the work,
|
|
so that less intermediate buffering is required in general.
|
|
</li>
|
|
|
|
<li>
|
|
net: new build tag netgo for building a pure Go net package (CL 7100050).
|
|
</li>
|
|
|
|
<li>
|
|
net/http: don't allow sending invalid cookie lines (CL 12204043).
|
|
</li>
|
|
|
|
<li>
|
|
net/http: allow ReadResponse with nil *Request parameter (CL 9821043).
|
|
</li>
|
|
|
|
<li>
|
|
net/http: allow responses to HEAD requests, detect type and length (CL 12583043).
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/runtime/"><code>runtime</code></a> package relaxes
|
|
the constraints on finalizer functions in
|
|
<a href="/pkg/runtime/#SetFinalizer"><code>SetFinalizer</code></a>: the
|
|
actual argument can now be any type that is assignable to the formal type of
|
|
the function, as is the case for any normal function call in Go.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/sort/"><code>sort</code></a> package has a new
|
|
<a href="/pkg/sort/#Stable"><code>Stable</code></a> function that implements
|
|
stable sorting. It is less efficient than the normal sort algorithm, however.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/strings/"><code>strings</code></a> package adds
|
|
an <a href="/pkg/strings/#IndexByte"><code>IndexByte</code></a>
|
|
function for consistency with the <a href="/pkg/bytes/"><code>bytes</code></a> package.
|
|
</li>
|
|
|
|
<li>
|
|
syscall: implemented Sendfile for Darwin, added Syscall9 for Darwin/amd64 (CL 10980043).
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/testing/"><code>testing</code></a> package
|
|
now exports the<a href="/pkg/testing/#TB"><code>TB</code></a> interface.
|
|
It records the methods in common with the
|
|
<a href="/pkg/testing/#T"><code>T</code></a>
|
|
and
|
|
<a href="/pkg/testing/#B"><code>B</code></a> types,
|
|
to make it easier to share code between tests and benchmarks.
|
|
Also, the
|
|
<a href="/pkg/testing/#AllocsPerRun"><code>AllocsPerRun</code></a>
|
|
function now quantizes the return value to an integer (although it
|
|
still has type <code>float64</code>), to round off any error caused by
|
|
initialization and make the result more repeatable.
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/text/template/"><code>text/template</code></a> package
|
|
now automatically dereferences pointer values when evaluating the arguments
|
|
to "escape" functions such as "html", to bring the behavior of such functions
|
|
in agreement with that of other printing functions such as "printf".
|
|
</li>
|
|
|
|
<li>
|
|
In the <a href="/pkg/time/"><code>time</code></a> package, the
|
|
<a href="/pkg/time/#Parse"><code>Parse</code></a> function
|
|
and
|
|
<a href="/pkg/time/#Format"><code>Format</code></a>
|
|
method
|
|
now handle time zone offsets with seconds, such as in the historical
|
|
date "1871-01-01T05:33:02+00:34:08".
|
|
Also, pattern matching in the formats for those routines is stricter: a non-lowercase letter
|
|
must now follow the standard words such as "Jan" and "Mon".
|
|
</li>
|
|
|
|
<li>
|
|
The <a href="/pkg/unicode/"><code>unicode</code></a> package
|
|
adds <a href="/pkg/unicode/#In"><code>In</code></a>,
|
|
a nicer-to-use but equivalent version of the original
|
|
<a href="/pkg/unicode/#IsOneOf"><code>IsOneOf</code></a>,
|
|
to see whether a character is a member of a Unicode category.
|
|
</li>
|
|
|
|
</ul>
|