Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Swift TImeLapse - UIKonf 2016

A Swift TImeLapse - UIKonf 2016

As we come to the end of the first two years of Swift being public, we take a look back at where we've come from and the Open Source experience as we prepare for the Swift 3 release.

dimsumthinking

May 24, 2016
Tweet

More Decks by dimsumthinking

Other Decks in Programming

Transcript

  1. Us

  2. Objective - C is so old fashioned It's Holding us

    Back It has Square Brackets It doesn't have Garbage Collection
  3. Objective - C is so old fashioned It's Holding us

    Back It has Square Brackets It doesn't have Garbage Collection Wah wah wah
  4. BS

  5. #import "MasterViewController.h" #import "DetailViewController.h" #import "Search.h" #import "TextInputViewController.h" @interface MasterViewController

    () @end @implementation MasterViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.navigationItem.leftBarButtonItem = self.editButtonItem; self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController]; } - (void)viewWillAppear:(BOOL)animated { self.clearsSelectionOnViewWillAppear = self.splitViewController.isCollapsed; [super viewWillAppear:animated]; } - (void)insertNewSearchTerm:(NSString *)searchTerm { NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; Search *newSearch = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; newSearch.term = searchTerm; newSearch.timeOfLastSearch = [[NSDate alloc] init]; newSearch.hasBeenSearched = NO; NSError *error = nil; if (![context save:&error]) { NSLog(@"Unresolved error %@, %@", error, [error userInfo]); abort(); } } #pragma mark - Segues - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { //... if ([[segue identifier] isEqualToString:@"showDetail"]) { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; Search *search = [[self fetchedResultsController] objectAtIndexPath:indexPath]; DetailViewController *controller = (DetailViewController *)[[segue destinationViewController] topViewController]; [controller setSearch: search]; controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; controller.navigationItem.leftItemsSupplementBackButton = YES; } else if ([segue.identifier isEqualToString:@"showSearchInput"]){ TextInputViewController *textInputVC = segue.destinationViewController; textInputVC.title = @"Search Term"; textInputVC.placeholderText = @"Enter search term"; textInputVC.cancel = ^{ [self dismissViewControllerAnimated:YES completion:nil]; }; textInputVC.save = ^(NSString *text){ [self insertNewSearchTerm:text];)tableView { return [[self.fetchedResultsController sections] count]; }
  6. ;

  7. Objective - C is so old fashioned It's Holding us

    Back It has Square Brackets It doesn't have Garbage Collection Wah wah wah
  8. Objective - C is so old fashioned It's Holding us

    Back It has Square Brackets It doesn't have Garbage Collection Wah wah wah
  9. They Should have released it earlier and shown us what

    they were working on They should have released it later when it was ready.
  10. it's not open source They Should have released it earlier

    and shown us what they were working on They should have released it later when it was ready.
  11. Stable ABI Resilience Portability Type system cleanup and documentation Complete

    generics Focus and refine the language API design guidelines
  12. Stable ABI Resilience Portability Type system cleanup and documentation Complete

    generics Focus and refine the language API design guidelines
  13. Stable ABI Resilience Portability Type system cleanup and documentation Complete

    generics Focus and refine the language API design guidelines
  14. Stable ABI Resilience Portability Type system cleanup and documentation Complete

    generics Focus and refine the language API design guidelines
  15. Stable ABI Resilience Portability Type system cleanup and documentation Complete

    generics Focus and refine the language API design guidelines
  16. Stable ABI Resilience Portability Type system cleanup and documentation Complete

    generics Focus and refine the language API design guidelines
  17. Stable ABI Resilience Portability Type system cleanup and documentation Complete

    generics Focus and refine the language API design guidelines
  18. "As we get deeper into the Swift 3 release cycle,

    we’re beginning to have a more precise understanding about what the release will shape up to be."
  19. "This release […] will redefine the feel of Swift and

    make a major leap towards maturing the Swift language and development experience. "
  20. "We have had a focus on getting to source stability,

    with the forward-looking goal of making Swift 4 as source compatible with Swift 3 as we can[…]. It tackled API naming head on […], made major improvements to the consistency and feel of the language.…"
  21. "We have had a focus on getting to source stability,

    with the forward-looking goal of making Swift 4 as source compatible with Swift 3 as we can[…]. It tackled API naming head on […], made major improvements to the consistency and feel of the language.…"
  22. "We have had a focus on getting to source stability,

    with the forward-looking goal of making Swift 4 as source compatible with Swift 3 as we can[…]. It tackled API naming head on […], made major improvements to the consistency and feel of the language.…"
  23. "We have had a focus on getting to source stability,

    with the forward-looking goal of making Swift 4 as source compatible with Swift 3 as we can[…]. It tackled API naming head on […], made major improvements to the consistency and feel of the language.…"
  24. "That said, it is also clear at this point that

    some of the loftier goals that we started out with aren’t going to fit into the release"
  25. "including some of the most important generics features needed in

    order to lock down the ABI of the standard library."
  26. "the generics and ABI stability goals will roll into a

    future release of Swift, where I expect them to be the *highest* priority features to get done."
  27. "The highest priority to me is to get the 'little

    syntactic stuff' done […] because it affects source stability."
  28. "The highest priority to me is to get the 'little

    syntactic stuff' done […] because it affects source stability."
  29. "The highest priority to me is to get the 'little

    syntactic stuff' done […] because it affects source stability."
  30. Disappointing is my first thought, in fact worrying. Two years

    after the language was announced, the ABI is still not stable.
  31. Of the original […] seven goals [Only two Will] be

    achieved in Swift 3, this looks like failure.
  32. Swift 3 initial scope was determined prior to the input

    of the Swift Evolution community, just as it was being Open Sourced. The fact they are open to changing timelines and ensuring we get fundamentals of the language sorted is a testament to their commitment to the quality of Swift as a whole.
  33. Swift 3 initial scope was determined prior to the input

    of the Swift Evolution community, just as it was being Open Sourced. The fact they are open to changing timelines and ensuring we get fundamentals of the language sorted is a testament to their commitment to the quality of Swift as a whole.
  34. Swift 3 initial scope was determined prior to the input

    of the Swift Evolution community, just as it was being Open Sourced. The fact they are open to changing timelines and ensuring we get fundamentals of the language sorted is a testament to their commitment to the quality of Swift as a whole.
  35. "If we tried to rush Swift ABI stability out the

    door for Swift 3 we would certainly end up with deliberate or accidental flaws[…] Being able to take the time to get it right is a rare luxury."
  36. "If we tried to rush Swift ABI stability out the

    door for Swift 3 we would certainly end up with deliberate or accidental flaws[…] Being able to take the time to get it right is a rare luxury."
  37. "If we tried to rush Swift ABI stability out the

    door for Swift 3 we would certainly end up with deliberate or accidental flaws[…] Being able to take the time to get it right is a rare luxury."
  38. "I would be wholly concerned if any of Swift's goals

    were being defined by winning the short-term favor of business people."
  39. "I would be wholly concerned if any of Swift's goals

    were being defined by winning the short-term favor of business people."
  40. API design guidelines Automatic application of naming guidelines to imported

    Objective-C APIs Adoption of naming guidelines in key APIs Swiftification of imported Objective-C APIs Focus and refine the language Improvements to tooling quality
  41. API design guidelines Automatic application of naming guidelines to imported

    Objective-C APIs Adoption of naming guidelines in key APIs Swiftification of imported Objective-C APIs Focus and refine the language Improvements to tooling quality
  42. API design guidelines Automatic application of naming guidelines to imported

    Objective-C APIs Adoption of naming guidelines in key APIs Swiftification of imported Objective-C APIs Focus and refine the language Improvements to tooling quality
  43. API design guidelines Automatic application of naming guidelines to imported

    Objective-C APIs Adoption of naming guidelines in key APIs Swiftification of imported Objective-C APIs Focus and refine the language Improvements to tooling quality
  44. API design guidelines Automatic application of naming guidelines to imported

    Objective-C APIs Adoption of naming guidelines in key APIs Swiftification of imported Objective-C APIs Focus and refine the language Improvements to tooling quality
  45. API design guidelines Automatic application of naming guidelines to imported

    Objective-C APIs Adoption of naming guidelines in key APIs Swiftification of imported Objective-C APIs Focus and refine the language Improvements to tooling quality
  46. API design guidelines Focus and refine the language Adoption of

    naming guidelines in Automatic application of naming imported Objective-C APIs Swiftification of imported Objectiv Improvements to tooling quality API design guidelines Focus and refine the language Type system cleanup and documentation Resilience Portability Complete generics Stable ABI
  47. API design guidelines Focus and refine the language Adoption of

    naming guidelines in Automatic application of naming imported Objective-C APIs Swiftification of imported Objectiv Improvements to tooling quality API design guidelines Focus and refine the language Type system cleanup and documentation Resilience Portability Complete generics Stable ABI
  48. API design guidelines Focus and refine the language Adoption of

    naming guidelines in Automatic application of naming imported Objective-C APIs Swiftification of imported Objectiv Improvements to tooling quality API design guidelines Focus and refine the language Type system cleanup and documentation Resilience Portability Complete generics Stable ABI
  49. API design guidelines Focus and refine the language Adoption of

    naming guidelines in Automatic application of naming imported Objective-C APIs Swiftification of imported Objectiv Improvements to tooling quality API design guidelines Focus and refine the language Type system cleanup and documentation Resilience Portability Complete generics Stable ABI
  50. BS

  51. Us