<commit_before># What's new in Play 2.1?

Besides fixing more than 120 tickets, play 2.1 contains many new exciting features. This page contains some information about them.

## dependency updates

play, among other things, now depends on the latest version of ```scala (2.10)```, ```sbt (0.12.1)``` and ```netty (3.5.9)```.



## routes in subprojects and modularization

a play application now can include subprojects with route files. Furthermore, the main artifact was broken into 15 subprojects. These two powerful features allow developers to modularize their apps and fully control the classpath.

An example project that's utilizing these new features can be found [[here | ]].
 

## support for `scala.concurrent.Future`

As of 2.1, play is using the new universal `scala.concurrent.Future` API.

## JSON validation and navigation

[[How to use the new JSON validator |http://mandubian.com/2012/09/08/unveiling-play-2-dot-1-json-api-part1-jspath-reads-combinators/]]

## improved error reporting in console mode

in previous versions of play, certain routes and template errors generated console messages that were hard to parse. In 2.1 these exceptions were mapped backed to the source files.
<commit_msg>fix link for multi-project demo<commit_after># What's new in Play 2.1?

Besides fixing more than 120 tickets, play 2.1 contains many new exciting features. This page contains some information about them.

## dependency updates

play, among other things, now depends on the latest version of ```scala (2.10)```, ```sbt (0.12.1)``` and ```netty (3.5.9)```.



## routes in subprojects and modularization

a play application now can include subprojects with route files. Furthermore, the main artifact was broken into 15 subprojects. These two powerful features allow developers to modularize their apps and fully control the classpath.

An example project that's utilizing these new features can be found [[here | https://dl.dropbox.com/u/2721142/multi-project.tar.gz]].
 

## support for `scala.concurrent.Future`

As of 2.1, play is using the new universal `scala.concurrent.Future` API.

## JSON validation and navigation

[[How to use the new JSON validator |http://mandubian.com/2012/09/08/unveiling-play-2-dot-1-json-api-part1-jspath-reads-combinators/]]

## improved error reporting in console mode

in previous versions of play, certain routes and template errors generated console messages that were hard to parse. In 2.1 these exceptions were mapped backed to the source files.

{'fraction_non_alphanumeric': 0.08796481407437025, 'fraction_numerical': 0.029988004798080767, 'mean_word_length': 4.439130434782609, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3609542', 'n_tokens_mistral': 725, 'n_tokens_neox': 660, 'n_words': 321}