Hi folks, Now that Catalina is released, can we move on to some of the proposed changes discussed in this thread?
Philippe On Fri, 2019-07-12 at 12:18 -0700, Jonathan Bedard wrote: > Hello WebKit developers, > > Now that the Catalina developer seeds are available, it is official > that the new Mac developer tools come with Python 3. As a result, we > need to continue the ongoing discussion about migrating our Python > 2.7 scripts to Python 3. > > I propose that, over the next 9 months, we do the following: > > 1. Make any no-cost Python 3 compatibility changes, in particular > - print foo -> print(foo) > - import .foo -> import webkitpy.foo > 2. Convert any scripts not used in automation to Python 3 ASAP > (scripts like bisect-builds, block-spammers, compare-results) > 3. Make most Python 3 compatibility changes which sacrifice > efficiency, subject to a case-by-case audit. These would be things > like: > - dict.iteritems() -> dict.items() > - dict.items() -> list(dict.items()) > 4. Install Python 3 on macOS Sierra and Mojave bots > 5. Convert peripheral automation scripts to Python 3 1-by-1 (scripts > like clean-webkit, merge-results-json, webkit-patch) > 6. Convert testing scripts and webkitpy to Python 3 in a single > change > > The trouble I foresee us encountering with any scheme which attempts > a conversion which retains both Python 2.7 and Python 3 compatibility > is code like this: > > for expectation_string, expectation_enum in > test_expectations.TestExpectations.EXPECTATIONS.iteritems(): > ... > > In this code, the EXPECTATIONS dictionary is thousands of elements > long. In Python 2.7, iteritems() gives us an iterator instead of > creating a new list, like items() would. In Python 3, iteritems() > doesn’t exist, but items() does, and now gives us an iterator instead > of creating a new list. The trouble here is that, in this case, > creating a new list will be very expensive, expensive enough that we > might manage to impact the testing run. There isn’t really an elegant > way around this problem if we want to support both Python 2.7 and > Python 3, other than defining different code paths for each language. > > There are other small gotchas as well. For example, ‘%’ is no longer > a protected character, which can actually change the behavior of > regexes. That’s why I think it’s better to just try and directly > convert things instead of attempting to be compatible with both > Python 2.7 and Python 3. > > Jonathan > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev