Revision c9e32b8be95671340643c2e77a19af544af73266 authored by Ryan Lovelett on 12 January 2016, 22:07:27 UTC, committed by Ryan Lovelett on 13 January 2016, 01:56:33 UTC
Python 3 on Linux reads the system locale information to determine what
it should use as the default encoding for strings read from files (this
is different from OS X which is always UTF-8 by default [1]).

Since all the Swift gyb templates are UTF-8 encoded there is effectively
no reason to parse them as anything else. This patch forces the gyb
template parser to read the template using UTF-8 encoding. It accounts
for both reading and writing to a file as well as reading from stdin and
writing to stdout.

Two changes of note are that it now includes a __future__ import that
should make Python 2 behave a little closer to Python 3 in terms of
unicode support. Additionally Python 2 can no longer use cStringIO
because it does not support unicode [2].

To test this patch I ran these commands before and after the patch.
Note: that before the patch if the locale was set to something other
than UTF-8, ASCII for instance, the Python 3 runs would fail. See [3]
for example failure message.

Without stdin/stdout:

$ python2 utils/gyb -o Arrays.2.7.swift stdlib/public/core/Arrays.swift.gyb
$ python3 utils/gyb -o Arrays.3.5.swift stdlib/public/core/Arrays.swift.gyb
$ diff -u Arrays.2.7.swift Arrays.3.5.swift

With stdin/stdout:

$ cat stdlib/public/core/Arrays.swift.gyb | python2 utils/gyb > Arrays.2.7.stdin.stdout.swift
$ cat stdlib/public/core/Arrays.swift.gyb | python3 utils/gyb > Arrays.3.5.stdin.stdout.swift
$ diff -u Arrays.2.7.stdin.stdout.swift Arrays.3.5.stdin.stdout.swift

[1] https://docs.python.org/3/howto/unicode.html#unicode-filenames
[2] https://docs.python.org/2/library/stringio.html#cStringIO.StringIO
[3] https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20160111/000780.html
1 parent 7026909
Raw File
CODE_OWNERS.TXT
This file is a list of the people responsible for ensuring that patches for a
particular part of Swift are reviewed, either by themself or by someone else.
They are also the gatekeepers for their part of Swift, with the final word on
what goes in or not.

The list is sorted by surname and formatted to allow easy grepping and
beautification by scripts.  The fields are: name (N), email (E), web-address
(W), PGP key ID and fingerprint (P), description (D), and snail-mail address
(S).

N: David Abrahams
E: dabrahams@apple.com
D: Swift standard library

N: David Farler
E: dfarler@apple.com
D: Markup, Swift Linux port

N: Doug Gregor
E: dgregor@apple.com
D: AST, Basic, Parse, Sema

N: Joe Groff
E: jgroff@apple.com
D: SIL, SILGen

N: Argyrios Kyrzidis
E: kyrtzidis@apple.com
D: IDE, SourceKit, swift-ide-test

N: Chris Lattner
E: clattner@apple.com
D: Everything in Swift not covered by someone else

N: John McCall
E: rjmccall@apple.com
D: Demangler, IRGen, Runtime

N: Joe Pamer
E: jpamer@apple.com
D: Expression type checker (Sema/ConstraintSystem)

N: Jordan Rose
E: jordan_rose@apple.com
D: ClangImporter, Serialization, (Objective-)C printer, Driver

N: Nadav Rotem
E: nrotem@apple.com
D: SILOptimizer

N: Anna Zaks
E: ganna@apple.com
D: SIL diagnostics passes
back to top