Xcode 10 Playgrounds New Play System Improve Speed and Productivity.


  • Share on Pinterest

One of the nice things in Xcode 10 Playgrounds is the changes to how they are compiled and run. No longer is every line of code parsed each time you make a change, which can make for some long waits depending on the amount of code.

Xcode 10 now has a new system. If you open a playground, you will notice a Blue line down the left gutter (where the line numbers are) and a play icon.

Xcode 10 Playground

The Blue line indicates to us that this code is ready to run. If we click on the play icon in the circle or use shift + return to run the playground, all the code up to the play head will be executed for us. To better demonstrate this, I will move the cursor to line 3. If I press shift + return to run the code up to and including line 3, you will notice the Blue bar change.

Xcode 10 Playground, Partial Play

Notice how lines 1, 2, and 3 no longer have the Blue background. This indicates to us that these lines have been executed successfully.

So what does it mean that lines 4 and 5 still have the Blue background, you ask? Well, this is the playground's way of telling us that those two lines are the only ones that will be executed next time we press play. This is great. The playground is telling us ‘hey lines 1,2, and 3 have not changed and will not affect the results. So I will not bother executing the again for you’. That means faster times for us.

See, this is the playground trying to help us out and only perform lines of code that are necessary on each run. It analyses the code for us and determines if first, the code has changed since the last run, and secondly, does any of that code need to be run again as it affects the processing of any other new lines of code. How cool is that!

Yep, we can write code that only gets processed as needed. A great time saver for big playgrounds and complicated code.

Now, there will be times I’m sure you’ll want to force the execution of all the code in a playground. To do that, we can click on the square ‘stop’ icon on the bottom left, which resets our play status.

I should also mention that by clicking and holding on the stop icon you have the option to set manual or automatic play mode for the playground, nice to still be able to choose.

Because of this new system, each run retains the data generated. This means you can create a class, run it and then use that class and any data in the next run.

Overall, this is a great step forward (see what I did there debuggers) for playgrounds, they continue to be a useful way to test code without the need to generate a new project every time.