<commit_before># Change Log

All notable changes to this project will be documented in this file.
This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.

Changes are grouped as follows:
- **Added** for new features.
- **Changed** for changes in existing functionality.
- **Deprecated** for once-stable features removed in upcoming releases.
- **Removed** for deprecated features removed in this release.
- **Fixed** for any bug fixes.
- **Security** to invite users to upgrade in case of vulnerabilities.

<!--
Whitespace conventions:
- 4 spaces before ## titles
- 2 spaces before ### titles
- 1 spaces before normal text
 -->




## [0.11.0] - Unreleased


### Added

- Added support for complex (`0b1110i`) and rational (`0b1111r`) number literals. (#1487)
- Added 2.3.0 methods:
    * `Array#bsearch_index`
    * `Array#dig`
    * `Enumerable#chunk_while`
    * `Enumerable#grep_v`
    * `Enumerable#slice_after`
    * `Enumerable#slice_when`
    * `Hash#>`
    * `Hash#<`
    * `Hash#>=`
    * `Hash#>=`
    * `Hash#dig`
    * `Hash#fetch_values`
    * `Hash#to_proc`
    * `Struct#dig`
- Added safe navigator (`&.`) support. (#1532)
- Added Random class with seed support. The following methods were reworked to use it:
    * `Kernel.rand`
    * `Kernel.srand`
    * `Array#shuffle`
    * `Array#shuffle!`
    * `Array#sample`


### Changed

- Removed self-written lexer/parser. Now uses parser/ast gems to convert source code to AST. (#1465)
- Migrated parser to 2.3. Bump RUBY_VERSION to 2.3.0.
- Changed to be 2.3 compliant:
    * `Enumerable#chunk` (to take only a a block)
    * `Enumerable#slice_before` (to raise proper argument errors)
    * `Number#positive?` (to return false for 0)


### Deprecated

- `require 'opal/server` and `Opal::Server` are deprecated in favor of `require 'opal/sprockets/server'` and `Opal::Sprockets::Server` (now part of the opal-sprockets gem).


### Removed

- Removed `yaml` from stdlib, the older implementation was only available for NodeJS and not tested. Replace with `require 'nodejs/yaml'`
- Extracted sprockets support to `opal-sprockets` which should allow for wider support and less coupling (e.g. the `opal` gem will now be able to improve the compiler without worrying about `sprockets` updates). All the old behavior is preserved except for `Opal::Server` that has become `Opal::Sprockets::Server` (see Deprecated section above).


### Fixed

- Newly compliant with the Ruby Spec Suite:
    * `Module#class_variables`
    * `Module#class_variable_get`
    * `Module#class_variable_set`
    * `Module#remove_class_variable`
    * `Numeric#step` (#1512)

- Improvements for Range class (#1486)
    * Moved private/tainted/untrusted specs to not supported
    * Conforming `Range#to_s` and `Range#inspect`
    * Starting `Range#bsearch` implementation
    * Simple `Range#step` implementation
    * Fixing `Range#min` for empty Ranges
    * Fixing `Range#last(n)` `Range#first(n)` and one edge case of `Range#each`
    * Fixing some `Range#step` issues on String ranges
    * Simple `Range#bsearch` implementation, passes about half the specs
    * Minor styling improvements. Fixed size of `Range#step`.
    * Compile complex ranges to "Range.new" so there will be a check for begin and end to be comparable.

- Fixed `defined?` for methods raising exceptions
- Fixed `Kernel#loop` (to catch StopIteration error)
- Fixed inheritance from the `Module` class.




## [0.10.1] - 2016-07-06


### Fixed

- Fixed `-L` option for compiling requires as modules (#1510)<commit_msg>Update changelog with latest changes<commit_after># Change Log

All notable changes to this project will be documented in this file.
This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.

Changes are grouped as follows:
- **Added** for new features.
- **Changed** for changes in existing functionality.
- **Deprecated** for once-stable features removed in upcoming releases.
- **Removed** for deprecated features removed in this release.
- **Fixed** for any bug fixes.
- **Security** to invite users to upgrade in case of vulnerabilities.

<!--
Whitespace conventions:
- 4 spaces before ## titles
- 2 spaces before ### titles
- 1 spaces before normal text
 -->




## [0.11.0] - Unreleased


### Added

- Added support for complex (`0b1110i`) and rational (`0b1111r`) number literals. (#1487)
- Added 2.3.0 methods:
    * `Array#bsearch_index`
    * `Array#dig`
    * `Enumerable#chunk_while`
    * `Enumerable#grep_v`
    * `Enumerable#slice_after`
    * `Enumerable#slice_when`
    * `Hash#>`
    * `Hash#<`
    * `Hash#>=`
    * `Hash#>=`
    * `Hash#dig`
    * `Hash#fetch_values`
    * `Hash#to_proc`
    * `Struct#dig`
- Added safe navigator (`&.`) support. (#1532)
- Added Random class with seed support. The following methods were reworked to use it:
    * `Kernel.rand`
    * `Kernel.srand`
    * `Array#shuffle`
    * `Array#shuffle!`
    * `Array#sample`


### Changed

- Removed self-written lexer/parser. Now uses parser/ast gems to convert source code to AST. (#1465)
- Migrated parser to 2.3. Bump RUBY_VERSION to 2.3.0.
- Changed to be 2.3 compliant:
    * `Enumerable#chunk` (to take only a a block)
    * `Enumerable#slice_before` (to raise proper argument errors)
    * `Number#positive?` (to return false for 0)
- Use meaningful names for temporary variables in compiled JavaScript (e.g. for `def foo` was `TMP_123`, now `TMP_foo_123`)


### Deprecated

- `require 'opal/server` and `Opal::Server` are deprecated in favor of `require 'opal/sprockets/server'` and `Opal::Sprockets::Server` (now part of the opal-sprockets gem).


### Removed

- Removed `yaml` from stdlib, the older implementation was only available for NodeJS and not tested. Replace with `require 'nodejs/yaml'`
- Extracted sprockets support to `opal-sprockets` which should allow for wider support and less coupling (e.g. the `opal` gem will now be able to improve the compiler without worrying about `sprockets` updates). All the old behavior is preserved except for `Opal::Server` that has become `Opal::Sprockets::Server` (see Deprecated section above).


### Fixed

- Newly compliant with the Ruby Spec Suite:
    * `Module#class_variables`
    * `Module#class_variable_get`
    * `Module#class_variable_set`
    * `Module#remove_class_variable`
    * `Numeric#step` (#1512)

- Improvements for Range class (#1486)
    * Moved private/tainted/untrusted specs to not supported
    * Conforming `Range#to_s` and `Range#inspect`
    * Starting `Range#bsearch` implementation
    * Simple `Range#step` implementation
    * Fixing `Range#min` for empty Ranges
    * Fixing `Range#last(n)` `Range#first(n)` and one edge case of `Range#each`
    * Fixing some `Range#step` issues on String ranges
    * Simple `Range#bsearch` implementation, passes about half the specs
    * Minor styling improvements. Fixed size of `Range#step`.
    * Compile complex ranges to "Range.new" so there will be a check for begin and end to be comparable.

- Fixed `defined?` for methods raising exceptions
- Fixed `Kernel#loop` (to catch `StopIteration` error)
- Fixed inheritance from the `Module` class.
- Fixed using `--preload` along with `--no-opal` for CLI




## [0.10.1] - 2016-07-06


### Fixed

- Fixed `-L` option for compiling requires as modules (#1510)
{'fraction_non_alphanumeric': 0.1190087145969499, 'fraction_numerical': 0.018790849673202614, 'mean_word_length': 3.816393442622951, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 11, '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': '7265316', 'n_tokens_mistral': 2442, 'n_tokens_neox': 2243, 'n_words': 820}