<commit_before># CQEngine Release Notes #

### Version 2.8.0 - 2016-09-19 ###
  * CQEngine attributes can now be created from Java 8 lambda expressions and method references:
    * `Attribute<Car, Double> PRICE = attribute(Car::getPrice);`
    * `Attribute<Car, Boolean> IS_CHEAP = attribute(car -> car.getPrice() < 4000);`
      * See [LambdaAttributes](LambdaAttributes.md) for more details
  * Improved support for Java 8 Streams
      * A `StreamFactory` class is now provided to convert CQEngine ResultSets to Java 8 Streams
        * See [Streams](Streams.md) for more details
  * Support for DateMath queries (via DateMathParser), and support for SQL boolean literals has been added to the SQL query dialect (issue #88)
  * Despite these Java 8 features, CQEngine remains fully compatible with Java 6 & 7

### Version 2.7.1 - 2016-08-12 ###
  * Maintenance release.
  * Improved performance of `ResultSet.isEmpty()`/`isNotEmpty()` when results are to be ordered (issue #78).
  * Added `HashIndex.onSemiUniqueAttribute()` as a way to reduce memory overhead of a `HashIndex` (issue #67).
  * Fixed potential ClassCastException with combinations of certain queries with `CompoundIndex` (issue #85).
  * Improved `IndexedCollection.retainAll()` to avoid opening two connections to non-heap persistence and to reuse a single connection instead.
  * Improved `IndexedCollection.iterator().remove()` to integrate better with how resources are closed.

### Version 2.7.0 - 2016-07-13 ###
  * CQEngine now supports Partial Indexes.
    * The following new indexes are provided:
      * [PartialDiskIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/disk/PartialDiskIndex.html)
      * [PartialOffHeapIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/offheap/PartialOffHeapIndex.html)
      * [PartialNavigableIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/navigable/PartialNavigableIndex.html)
    * Partial Indexes are similar to regular indexes and provide the same features, but they are also configured with an arbitrary _filter query_ which restricts the objects which will be stored in the index to those which match the _filter query_.
    * CQEngine will then use a partial index to accelerate a query, when it finds that a partial index on an attribute referenced in the query is available, *and* the set of objects which would match the query are logically a subset of objects which would match the _filter query_ of the partial index. See [PartialIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/support/PartialIndex.html) for details.<commit_msg>Update ReleaseNotes.md<commit_after># CQEngine Release Notes #

### Version 2.8.0 - 2016-09-19 ###
  * CQEngine attributes can now be created from Java 8 lambda expressions and method references:
    * `Attribute<Car, Double> PRICE = attribute(Car::getPrice);`
    * `Attribute<Car, Boolean> IS_CHEAP = attribute(car -> car.getPrice() < 4000);`
      * See [LambdaAttributes](LambdaAttributes.md) for more details.
  * Improved support for Java 8 Streams:
      * A `StreamFactory` class is now provided to convert CQEngine ResultSets to Java 8 Streams.
        * See [Streams](Streams.md) for more details.
      * Note: despite these Java 8 features, CQEngine remains fully compatible with Java 6 & 7.
  * Support for DateMath queries (via DateMathParser), and support for SQL boolean literals has been added to the SQL query dialect (issue #88).
  * Fixed issue where JOINs to a TransactionalIndexedCollection did not release read locks (issue #89).

### Version 2.7.1 - 2016-08-12 ###
  * Maintenance release.
  * Improved performance of `ResultSet.isEmpty()`/`isNotEmpty()` when results are to be ordered (issue #78).
  * Added `HashIndex.onSemiUniqueAttribute()` as a way to reduce memory overhead of a `HashIndex` (issue #67).
  * Fixed potential ClassCastException with combinations of certain queries with `CompoundIndex` (issue #85).
  * Improved `IndexedCollection.retainAll()` to avoid opening two connections to non-heap persistence and to reuse a single connection instead.
  * Improved `IndexedCollection.iterator().remove()` to integrate better with how resources are closed.

### Version 2.7.0 - 2016-07-13 ###
  * CQEngine now supports Partial Indexes.
    * The following new indexes are provided:
      * [PartialDiskIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/disk/PartialDiskIndex.html)
      * [PartialOffHeapIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/offheap/PartialOffHeapIndex.html)
      * [PartialNavigableIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/navigable/PartialNavigableIndex.html)
    * Partial Indexes are similar to regular indexes and provide the same features, but they are also configured with an arbitrary _filter query_ which restricts the objects which will be stored in the index to those which match the _filter query_.
    * CQEngine will then use a partial index to accelerate a query, when it finds that a partial index on an attribute referenced in the query is available, *and* the set of objects which would match the query are logically a subset of objects which would match the _filter query_ of the partial index. See [PartialIndex](http://htmlpreview.github.io/?http://raw.githubusercontent.com/npgall/cqengine/master/documentation/javadoc/apidocs/com/googlecode/cqengine/index/support/PartialIndex.html) for details.
{'fraction_non_alphanumeric': 0.09471256794597266, 'fraction_numerical': 0.017130620985010708, 'mean_word_length': 4.637883008356546, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, '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': '1756744', 'n_tokens_mistral': 1768, 'n_tokens_neox': 1645, 'n_words': 575}