I ran a test to see the maximum number of elements swift could handle before crashing and the numbers are
swift 2.2: 1213 swift 3-dev (mar 16 snapshot): 976 I don't know why swift 3 is lower than swift 2.2, but I'm guessing its due to the same underlying cause, which is running out of stack space. If the swift 3 snapshot was compiled with different flags than 2.2 then swift 3 could have different stack usage properties, and thus run out of stack space quicker. Here is a python script that generates a dictionary literal with some number of elements and runs swift on it, then does binary search to find the maximum number of elements before swift crashes. #!/usr/bin/env python def make_swift(n): def element(x): return '"x%d": "0"' % x data = "let n = ["; data += ',\n'.join([element(x) for x in xrange(0, n)]) data += "]" path = 'test-%d.swift' % n file = open(path, 'w') file.write(data) file.write('\n') file.close() return path def translate(path): print "Testing %s" % path import subprocess out = subprocess.call(['swift', path]) if out == 0: print " ok" else: print " failed" return out == 0 def test(n): path = make_swift(n) return translate(path) def binary_search(low, high): while low < high: middle = (low + high) / 2 if middle == low: low = high middle = high if test(middle): low = middle else: high = middle return middle #test(5000) low = 1 high = 10 while test(high): low = high high *= 2 last_failed = binary_search(low, high) print "Failed at %d" % last_failed On 03/22/2016 09:03 PM, Kyle Jessup via swift-dev wrote: Ok I will test with swift 3, but just to avoid any confusion I am not a developer on PerfectLib. I am! Admittedly, that dictionary contains many obsolete mime type mappings which could be pruned (anyone serving Lotus 1-2-3 files?). However, 816 items is not an absurdly large number so it’s likely someone else would have run into this in the near future. The code does successfully compile for me using the release 2.2 version on my VMWare based Ubuntu 15 system. It also compiles using 3.0. -Kyle I was just using that file as a test case for my application that is based on the swiftc code base. My application is designed to consume arbitrary swift 2.2 code. If there is a problem with swift 3 then I suppose it can be fixed, but if swift 3 has no issues then it looks like I have few options for remediation. On 03/22/2016 12:56 PM, Dmitri Gribenko wrote: On Tue, Mar 22, 2016 at 12:17 PM, Rafkind, Jon via swift-dev <swift-dev@swift.org><mailto:swift-dev@swift.org><mailto:swift-dev@swift.org><mailto:swift-dev@swift.org>wrote: I have to support swift 2.2 for the time being because I have to support the current release of xcode. I will upgrade to swift 3 when it is released. I understand your motivation, but I would still recommend trying to update your code (on a branch) to Swift 3. This way you will get a preview of the changes, would be able to provide feedback, and maybe even find issues with the changes that we are making before Swift 3 is finalized in a release. There is benefit for both your library and the Swift community. Dmitri -- _______________________________________________ swift-dev mailing list swift-dev@swift.org<mailto:swift-dev@swift.org> https://lists.swift.org/mailman/listinfo/swift-dev -- _______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev