Skip to content

Latest commit

 

History

History
1009 lines (763 loc) · 43.6 KB

CHANGELOG.md

File metadata and controls

1009 lines (763 loc) · 43.6 KB

CHANGELOG

2.4.1 compare

2.4.0 compare

  • Handle code inspections in lib/ - use %w and https in gemspec by @gonzedge

    • And add explicit RubyMine noinspection comments for things that RuboCop already takes care of.
  • Handle code inspections in tasks/ by @gonzedge

    • Rename Helpers::{GC => GarbageCollection} (and corresponding files)
    • Use symbols for hash key?/has_key?/!![] ips benchmark comparison
  • Use RSpec::Config's filter_run_when_matching instead of deprecated run_all_when_everything_filtered by @gonzedge

    • Use non-reserved words for file format and method name so that we are not accidentally shadowing important built-ins (:format => :file_format, :method => :method_name)
    • Explicitly assert any new Node is not a #word? by default after initialization
    • Remove unnecessary parens from let definitions in specs
  • Use @return [self] in Node#terminal! rubydoc by @gonzedge

    • Also fix typos in CHANGELOG.md and CONTRIBUTING.md
  • Update CallTreeProfiler to use new RubyProf::Profiler format by @gonzedge

    Plus:

    • More accurate pop/shift/slice! reporting
    • Only require benchmark/ips when necessary
    • One-liner blocks
  • Add version specs to ensure README/CHANGELOG update before release by @gonzedge

  • Exclude spec/ from simplecov coverage by @gonzedge

    ... by using the same filter as we use for Coveralls.wear!

  • CodeClimate plugins by @gonzedge

    • fixme
      • And exclude rubocop files
    • markdownlint
      • Max line length is 120 (MD013)
      • Ordered list style is ordered (MD029)
      • Add titles to CHANGELOG.md and CONTRIBUTING.md
      • Apply lint rules
      • Fix corresponding tests
    • rubocop
      • Allow up to 5 params to be optional (same as max total params)
      • Change max line length to 120.
    • flog
  • Add semgrep GitHub Action by @gonzedge

  • Update copyright years by @gonzedge

2.3.1 compare

  • Fix Rambling::Trie.load docs in README by @gonzedge
  • Destructure args hash before passing to performance rake task by @gonzedge
  • Update copyright years by @gonzedge
  • Attempt to clear gem version badge being cached by GitHub (?) by @gonzedge
  • Migrate from TravisCI to SemaphoreCI by @gonzedge
  • Be more lax with file size tests (#26) by @gonzedge
  • Add missing compress! in container spec (#25) by @gonzedge
    • To actually test the non-matching tree shared example for compressed tries.
  • Upgrade RuboCop and apply new rules (#24) by @gonzedge
    • Issues found in lib/ and tasks/
      1. Explicitly disable Style/ExplicitBlockArgument due to resulting performance hits
      2. Add missing supers
      3. Yoda-style conditionals
      4. Bump target ruby required version to current min supported (2.7.0)
    • Issues found in spec/
      1. Use instance_double instead of double
      2. Split tests into single-assertion specs when parameterization is possible; disable otherwise
      3. Use let! instead of instance variables
      4. Remove duplicate test groups
      5. Use when at the start of context block descriptions
      6. Use described_class, subject in specs where possible
      7. Single-line before where possible
    • Other
      1. Explicitly add rubocop-performance, rubocop-rake, rubocop-rspec plugins
      2. Remove unused Rails rules
      3. Remove unused/deprecated RSpec/Layout/Style/Lint rules
  • More thorough serializer tests (#28) by @gonzedge
    • Realized that, except for one integration test, we were not testing compressed tries being serialized so added some more specific use cases. Also took the chance to expand the zip serializer spec to handle all formats.
  • Update badges, CI and test/coverage reporting (#29) by @gonzedge
    • Correctly configure main task to publish test report, now being picked up by Semaphore
    • On badges:
      • Change README.md to have one badge per line instead of all in one giant line
      • Add RubyGems downloads badge
      • Add CodeClimate issues badge
      • Update docs badge to point directly to rubydoc.info/gems/rambling-trie
      • Update license badge to one from shields.io
  • Use GitHub Actions for main branch and PR checks (#30, #31, #32) by @gonzedge
    • Run build action with lint for rubocop, spec for rspec, coverage for coveralls
    • Run codeql action
    • Run dependency-review action only on pull requests
  • Reduce semaphore config to latest ruby (#33) by @gonzedge
    • Now, we only care about top-level pass/fail for badge reporting. All other tests are run with GitHub Actions.
  • Rename GitHub Actions and steps for better badges (#34) by @gonzedge
    • Plus reformat badges at top of README.md.
  • Add CodeClimate coverage step to build GH action (#35) by @gonzedge
    • Do things differently for coveralls and code climate
    • Use correct shared example for words_within? on compressed tries
  • Ensure all serializer #dump methods return the size of the file (#36) by @gonzedge
    • Add test in a serializer shared examples
    • Implement method for Rambling::Trie::Serializers::Zip
  • Ensure #each/#each_word return Enumerator/self (#37) by @gonzedge
    • … depending on whether a block is given or not.
  • Improve API documentation (#38) by @gonzedge
    • Add Readers::Reader and Serializer::Serializer base classes
    • Make all readers/serializers extend from their corresponding base classes
    • Better docs with Reader/Serializer and generics
    • Fix all code blocks from backtick to + and add some more
    • Add @return [void] where appropriate
    • Add @return [self] where appropriate
    • Fix Nodes::Node duplicate and broken references
    • Fix some typos and add some missing periods
  • Add explicit changelog and docs urls to .gemspec (#39) by @gonzedge
    • Update CHANGELOG.md with latest changes

2.3.0 compare

  • Don't use YAML.safe_load's legacy API by @KitaitiMakoto
  • Add explicit support for Ruby 3.1.x by @KitaitiMakoto
  • Add block to Coveralls.wear! to prevent SimpleCove.start being called twice by @KitaitiMakoto
  • Add explicit support for Ruby 3.2.x by @agate
  • Make sure gem also supports all the sub version of 3.2 by @agate
    • Includes adding support for 2.7.{4,5,6,7}, 3.0.{2,3,4,5}, 3.1.{0,1,2,3} and 3.2.{0,1}
  • Use new coveralls_reborn to support new ruby by @agate
  • Update required_ruby_version bounds to >= 2.7, < 4 by @gonzedge
  • Drop support for Ruby 2.5.x and 2.6.x by @gonzedge
  • Add Ruby 2.7.8, 3.0.6, 3.1.4, 3.2.2 to supported versions by @gonzedge
  • Update documentation links to min required ruby version by @gonzedge

2.2.1 compare

2.2.0 compare

2.1.1 compare

  • Change slice! to shift (#16) by @shinjiikeda
  • Frozen string issue fix by @godsent
  • Drop Ruby 2.4.x; add 2.7 and updated 2.6.x/2.5.x support by @gonzedge
  • Be more flexible with file sizes for zip file test by @gonzedge
  • Upgrade development dependencies by @gonzedge
  • Specify ArgumentError exception for provider collection spec by @gonzedge

2.1.0 compare

  • Add official support for Ruby 2.6 by @gonzedge
  • Add Ruby 2.5.{2,3,4,5} and 2.4{5,6} to supported versions by @gonzedge
  • Require Ruby 2.4.x or up in gemspec by @gonzedge
  • Remove official support for 2.3.x by @gonzedge

2.0.0 compare

Breaking Changes

  • Remove Container deprecated methods by @gonzedge

    • #as_word
    • #letter
    • #parent
    • #to_s
  • Require Ruby 2.3.x or up in gemspec by @gonzedge

  • Drop Ruby 2.2.x support in favor of squiggly heredoc (<<~) by @gonzedge

Enhancements

Major

Most of these help with the gem's overall performance.

  • Add Ruby 2.5.1, 2.4.4 and 2.3.7 to supported versions by @gonzedge
  • Move #partial_word? and #word? up to Node by @gonzedge
  • Use Yaml.safe_load in yaml serializer by @gonzedge
  • Use #each_key and #each_value where appropriate by @gonzedge
  • Extract #deprecation_warning method for Container by @gonzedge
  • Stop using #has_x? method configuration by @gonzedge

Minor

  • Remove unnecessary rake task file by @gonzedge
  • Extract serialization tasks into their own classes by @gonzedge
  • Regenerate serialized dictionaries every time by @gonzedge
  • Change compression strategy and tree structure for Compressed nodes by @gonzedge
  • Add ips dup vs clone vs slice benchmark by @gonzedge
  • Improve documentation of .dump, .load and all Serializers by @gonzedge
  • Exclude Serializers::Marshal from rubocop inspection by @gonzedge
  • Add ips alias_method vs alias benchmark by @gonzedge
  • Refactor rake tasks by @gonzedge
  • Add #not_change matcher to simplify ProviderCollection spec by @gonzedge
  • First big Rubocop sweep by @gonzedge
  • Add rubocop by @gonzedge

1.0.3 compare

Breaking Changes

  • Rename Compressable to more widely used Compressible by @gonzedge
  • Add letter to Node's constructor by @gonzedge

Enhancements

Major

Most of these help with the gem's overall performance.

  • Add #compress method to public API by @gonzedge
  • Add #concat method to public facing API by @gonzedge
  • Define ProviderCollection#format method instead of alias for #keys by @gonzedge
  • Remove unnecessary aliases and move necessary ones to private by @gonzedge
  • Add #has_letter? alias for #has_key? by @gonzedge
  • Add deprecation warnings for Container's methods by @gonzedge
  • Define delegate methods explicitly and remove dependency on Forwardable by @gonzedge
  • Reverse char array and use #pop instead of slice when adding a word by @gonzedge
  • Pull #scan up to Node by @gonzedge
  • Slightly reduce memory for Properties and ProviderCollection classes by @gonzedge
  • Use #children_tree instead of #children when possible by @gonzedge
  • Remove unnecessary assignment in #letter= by @gonzedge
  • Use #each_value instead of #values.#each in Enumerable#each by @gonzedge
  • Use #each_key instead of #keys.#each in CompressedNode#current_key by @gonzedge
  • Use File.foreach to read file on Readers::PlainText by @gonzedge
  • Preemptively convert the word added to array of symbols by @gonzedge
  • Pull gem require up to the Rakefile to avoid issues with .load method by @gonzedge
  • Add Ruby 2.5.0 support by @gonzedge

Minor

  • Better name for classes in ips attr_accessor vs method benchmark task by @gonzedge
  • Fix links in README by @gonzedge
  • Require profiling libraries only when they are strictly necessary by @gonzedge
  • Refactor trie integration tests by @gonzedge
  • Refactor serializer tests by @gonzedge
  • Extract shared examples for trie node implementations by @gonzedge
  • Add missing documentation in Configuration::Properties by @gonzedge
  • Update documentation to reflect actual side effects (or lack thereof) by @gonzedge
  • Rename a few tests to maintain consistent wording by @gonzedge
  • Add #add_word and #add_words helpers to avoid shotgun surgery in tests by @gonzedge
  • Use real node for Container#each test by @gonzedge
  • Add documentation for ProviderCollection's #keys and #[] by @gonzedge
  • Upgrade to coveralls 0.8.21 by @gonzedge
  • Add documentation for delegate methods and fix Node specs by @gonzedge
  • Fix wrong documentation links by @gonzedge
  • Add ips rake task namespace for benchmark-ips results by @gonzedge
  • Add Pry to development dependencies for debugging purposes by @gonzedge
  • Derive filename from task's name by @gonzedge
  • Complete overhaul of performance task directory structure by @gonzedge
  • Refactor Compressor and improve memory footprint and performance by @gonzedge
  • Move all Nodes into 'nodes/' directory by @gonzedge

1.0.2 compare

  • Drop Ruby 2.1.x support by @gonzedge
  • Add Ruby 2.4.{2,3}, 2.3.{5,6} 2.2.{8,9} to supported versions by @gonzedge
  • Add Ruby 2.3.4 and 2.2.7 to supported versions by @gonzedge

1.0.1 compare

  • Use Ruby's own Forwardable again by @gonzedge
  • Remove CodeClimate test reporter by @gonzedge
  • Add Ruby 2.4.1 to supported versions by @gonzedge

1.0.0 compare

Breaking Changes

  • Rename PlainTextReader to Readers::PlainText by @gonzedge
  • Rename Compression to Compressable by @gonzedge
  • Rename Inspect to Inspectable by @gonzedge

Enhancements

Major

  • Add Serializers to dump trie into/load trie from disk #10 by @gonzedge

    • Supported formats include Ruby's Marshal (.marshal) with Serializers::Marshal and YAML (.yaml or .yml) with Serializers::Yaml
    • The format to use is determined by the filepath extension and Marshal is used when a format isn't recognized.
    # Save `your_trie` into a file
    Rambling::Trie.dump your_trie, 'a filename'
    
    # Load a trie from a file into memory
    trie = Rambling::Trie.load 'a filename'
  • Add Serializers::Zip to handle zip files by @gonzedge

    Automatically detects .marshal and .yaml files, as well as any configured Serializer based on filepath extension

  • Add ability to configure rambling-trie #11 by @gonzedge

    Rambling::Trie.config do |config|
      config.compressor = MyCompressor.new
      config.root_builder = lambda { MyNode.new }
    
      config.readers.add :html, MyHtmlReader.new
      config.readers.default = config.readers[:html]
    
      config.serializers.add :json, MyJsonSerializer.new
      config.serializers.default = config.serializers[:yml]
    end
  • Add #words_within and #words_within? to get all words matched within a given string #9 by @gonzedge

    • #words_within returns all the matched words
    • #words_within? returns true as soon as it finds one matching word
  • Add #== to compare nodes by @gonzedge

    Contained in Rambling::Trie::Comparable module. Two nodes are equal to each other if they have the same letter, they are both either terminal or non-terminal and their children tree is the same

  • Add changelog by @gonzedge

  • Add contributing guide by @gonzedge

Minor

  • Extract modules for peripheral node functionality by @gonzedge

    • Move #to_s to Stringifyable module
    • Move #as_word to Stringifyable module by
    • Move #== to Comparable module
    • Rename Compression to Compressable
    • Rename Inspector to Inspectable
  • Add #terminal? value to inspect output by @gonzedge

  • Display value of #terminal instead of #terminal? when Node is inspected by @gonzedge

  • Freeze Rambling::Trie::VERSION by @gonzedge

  • Refactor performance instrumentation tasks by @gonzedge

    • Add Performance module
    • Add Performance::Reporter & Performance::Directory classes
    • Move task execution into individual classes
    • Unify all tasks into single entry point rake performance[type,method]
  • Change benchmark report format by @gonzedge

  • Correct supported versions by @gonzedge

  • Only create new Reader instance when filepath is given on initialization by @gonzedge

  • Update license year by @gonzedge

0.9.3 compare

Enhancements

Major

  • Add Ruby 2.4 to supported versions by @gonzedge
  • Drastically reduce size of gem by @gonzedge
    • By excluding unnecessary assets/ and reports/ when building the gem.
    • Size reduction: from ~472KB to ~21KB.
  • Make root node accessible via container by @gonzedge
    • So that anyone using rambling-trie can develop their custom algorithms
  • Expose root node's #to_a method through Container by @gonzedge
  • Add own Forwardable#delegate because of Ruby 2.4 performance degradation by @gonzedge
    • Was able to take Creation and Compression benchmarks (~8.8s and ~1.5s respectively) back down to the Ruby 2.3.3 levels by adding own definition of Forwardable#delegate.

Minor

  • Ensure unicode words are supported by @gonzedge
  • Add flamegraph reports to performance instrumentation tasks by @gonzedge
  • Move benchmark/profiling dependencies from gemspec to Gemfile by @gonzedge
  • Add missing docs by @gonzedge
  • Improvements on TravisCI setup by @gonzedge
  • Add CodeClimate test coverage integration by @gonzedge
  • Move rspec config from .rspec to spec_helper by @gonzedge

0.9.2 compare

Enhancements

Major

  • Fix "undefined method to_sym" on compressed trie's #partial_word? and #scan by @gonzedge

  • Expose all usable Node methods in Container through delegation by @gonzedge

    • Expose #as_word
    • Expose #children
    • Expose #children_tree
    • Expose #has_key?
    • Expose #parent
    • Expose #size
    • Expose #to_s

Minor

  • Unify #scan implementation between Raw and Compressed node by @gonzedge

0.9.1 compare

Enhancements

Major

Minor

  • Make trie integration test a bit faster by @gonzedge
  • Remove unnecessary #to_a calls from Container by @gonzedge
  • Extract #recursive_get to unify #partial_word? and #scan implementations by @gonzedge
  • Better #word? implementation for compressed node by @gonzedge
  • Rename new_letter => letter by @gonzedge
  • Further performance instrumentation improvements by @gonzedge
  • Split out benchmark reports per version by @gonzedge

0.9.0 compare

Breaking Changes

  • Rambling::Trie.create now returns a Container instead of a Root by @gonzedge

    • Container exposes these API entry points:
      • #partial_word? and its alias #match?
      • #word? and its alias #include?
      • #add and its alias #<<
      • yield the constructed Container on #initialize
    • Rambling::Trie::Node and its subclasses no longer expose:
      • #match?
      • #include?
      • #<<
      • yield on #initialize
  • Remove Branches module, all of its behavior is now contained in RawNode and CompressedNode by @gonzedge

  • Rename Compressor module to Compression (Compressor is now the class that transforms between a RawNode and a CompressedNode) by @gonzedge

Enhancements

Major

  • Separate uncompressed trie vs compressed trie logic into separate objects by @gonzedge

    • Create separate RawNode and CompressedNode classes
    • Add Compressor for #compress! implementation that maps from a RawNode to a CompressedNode
  • Add #terminal! to Node to force node to be terminal by @gonzedge

  • Move #root? into Node by @gonzedge

  • Improve memory footprint of compressed trie (CompressedNode) by @gonzedge

  • Small memory improvements to RawNode by @gonzedge

  • Improve Rambling::Trie::Enumerable performance, hence #scan performance by @gonzedge

  • Improve performance for #scan by @gonzedge

  • Additional performance improvements for raw and compressed nodes operations by @gonzedge

  • Improve trie creation performance by @gonzedge

  • Improve performance of trie initialization from file by @gonzedge

Minor

  • Delegate #inspect to #root node by @gonzedge

  • Rename first_letter to letter in RawNode by @gonzedge

  • Expand performance instrumentation by @gonzedge

    Include memory profiles, call tree profiles and benchmark measurements for #scan method

0.8.1 compare

Enhancements

Major

  • Fix NoMethodError missing branch from compressed root #8 by @gonzedge
  • Add Ruby 2.2.5, 2.2.6, 2.3.1, 2.3.2 and 2.3.3 to supported versions by @gonzedge

0.8.0 compare

Breaking Changes

  • Drop support for Ruby 1.9.x and 2.0.x by @gonzedge

Enhancements

Major

  • Add #scan method and its alias #words to find all words that match a given partial word #7 by @gonzedge

    • Return matching Node
    • Use Null Object pattern to return empty array with Rambling::Trie::MissingNode
  • Add Ruby 2.1.6, 2.1.7, 2.1.8, 2.2.1, 2.2.2, 2.2.3, 2.2.4, and 2.3.0 to supported versions by @gonzedge

Minor

0.7.0 compare

Breaking Changes

  • Remove deprecated #branch? method by @gonzedge
  • Drop support for Ruby 1.9.2 by @gonzedge
  • Remove Rails version specification (not relevant) by @gonzedge

Enhancements

Major

  • Add Ruby 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5 to supported versions by @gonzedge

  • Upgrade to RSpec 3 @gonzedge

    • Update gem dependencies and be more restrictive about gem dependency versions
    • Update other dev dependencies
    • Use RSpec's new syntax for message expectations
  • Add LICENSE to gemspec by @gonzedge

Minor

  • Update license by @gonzedge

  • Explicitly define #<< alias for #add by @gonzedge

    This avoids having to call .alias_method again for #add method overloads.

0.6.1 compare

Enhancements

Major

  • Performance improvements on uncompressed #word? and #partial_word? by @gonzedge

0.6.0 compare

Breaking Changes

  • Change return value of #children by @gonzedge

    Returns the array of child nodes instead of the Hash representing the tree of children

  • Rename #branch? method to #partial_word? by @gonzedge

  • Rename old #children method to #children_tree by @gonzedge

Enhancements

Major

Minor

  • Remove perftools.rb dependency by @gonzedge
  • Use Forwardable instead of own delegator by @gonzedge
  • Specify 'MIT License' in the license file by @gonzedge
  • Update license year by @gonzedge

0.5.2 compare

Enhancements

Major

Minor

  • Safer #letter= implementation by @gonzedge
  • Refactor #as_word to use #to_s by @gonzedge
  • Change spec format and remove rails matchers on guard by @lilibethdlc
  • Default rspec output to documentation and syntax to expect by @gonzedge
  • Require bundler/gem_tasks instead of calling install_tasks directly by @lilibethdlc

0.5.1 compare

Enhancements

Major

  • Extract file reading logic into own PlainTextReader object by @gonzedge

  • Replace instance variables with attr accessors/writers by @gonzedge

    Including #letter, #children, #terminal

Minor

0.5.0 compare

Breaking Changes

  • Remove deprecated Rambling::Trie.new entry point by @gonzedge

  • Remove deprecated methods by @gonzedge

    Includes #has_branch_for?, #is_word? and #add_branch_from

Enhancements

Major

  • Yield created trie on Rambling::Trie.create by @gonzedge
  • Add Inspector module for pretty printing by @lilibethdlc
  • Rename #has_branch? to #branch? by @gonzedge
  • Rename #add_branch to #add by @gonzedge
  • Use faster string concatenation with #<< instead of #+ by @lilibethdlc
  • Add missing InvalidOperation exception messages by @gonzedge

Minor

  • Configure specs to be run in random order by @gonzedge
  • Default word to nil on Node initialization by @gonzedge
  • Change required files list from array to %w{} by @gonzedge
  • Change expectation syntax from should to expect().to by @gonzedge
  • Upgrade development dependencies by @gonzedge

0.4.2 compare

Enhancements

Major

  • Fix variable mutation on Root#add_branch_for #6 by @gonzedge

    • Define #<< instead of alias for overriding purposes
  • Add Enumerable capabilities #5 by @gonzedge

  • Restructure file/directory tree again by @gonzedge

    Files now live under lib/rambling/trie instead of lib/rambling-trie

Minor

  • Fix param name for #create and #new by @gonzedge
  • Adding Travis CI configuration by @gonzedge

0.4.1 compare

Breaking Changes

  • Move ChildrenHashDeferer to Rambling::Trie module by @gonzedge

Enhancements

Major

  • Add missing deprecation warning for Rambling::Trie.new by @gonzedge
  • Add the #<< method to Node #4 by @gonzedge
  • Add #include? method to Root #3 by @gonzedge

Minor

  • Lower complexity of has_branch_for? implementation for compressed by @gonzedge
  • Minor performance improvements for compressed trie by @gonzedge
  • Use new #<< method in place of #add_branch_from by @gonzedge

0.4.0 compare

Enhancements

Major

  • Create new Rambling::Trie.create API entry point by @gonzedge
  • Change gem name and directory structure to match standard by @gonzedge

Minor

  • Update documentation for new entry point by @gonzedge
  • Chang some describes to context by @gonzedge
  • Add bundler rake tasks by @gonzedge
  • Update gemspec to match standard style by @gonzedge
  • Add perftools.rb to the mix (cpu profiling) by @gonzedge
  • Remove unused variable by @gonzedge

0.3.4 compare

Enhancements

Major

  • Fix issue with Rambling::Trie class definition by @gonzedge
  • Performance improvement on #has_branch_for? by @gonzedge

Minor

  • Add guard to Gemfile by @gonzedge
  • Add simplecov for code coverage by @gonzedge
  • Refactor rambling-trie requires by @gonzedge
  • Remove unnecessary internal #trie_node by @gonzedge
  • Refactor specs to "The RSpec Way" by @gonzedge
  • Add new benchmarking report info by @gonzedge
  • Update RubyDoc.info link and compression info by @gonzedge

0.3.3 compare

Enhancements

Major

  • Performance improvements for compressed and uncompressed tries by @gonzedge
  • Add API documentation link (rubydoc.info - yard) by @gonzedge
  • Add yard and redcarpet to development dependencies by @gonzedge
  • Add inline documentation for rambling-trie by @gonzedge

Minor

  • Minor refactoring by @gonzedge
  • Improve #has_branch_for? for compressed trie by @gonzedge
  • Update README info for has_branch_for? method by @gonzedge

0.3.2 compare

Enhancements

Major

  • Fix bug when adding terminal word that exists as non-terminal node #2 by @gonzedge
  • Fix #has_branch_for? for compressed trie #2 by @gonzedge
  • Fix #is_word? method for compressed trie #2 by @gonzedge

Minor

  • Refactor branch methods and improve performance a bit by @gonzedge
  • Add performance report file by @gonzedge
  • Add performance report file appending by @gonzedge

0.3.1 compare

Enhancements

Major

  • Include version on gemspec from version file by @gonzedge
  • Restrict #compress! to Root by @gonzedge
  • Move branches logic to own Branches module by @gonzedge

Minor

  • Add first rake tasks and version file by @gonzedge
  • Add performance report tasks by @gonzedge

0.3.0 compare

Enhancements

Major

  • Add LICENSE by @gonzedge
  • Handle empty string edge case by @gonzedge
  • Performance gain replacing block.call with Object.send by @gonzedge

Minor

  • Refactor Compressor by @gonzedge
  • Remove Gemfile.lock to avoid hard dependencies by @gonzedge

0.2.0 compare

Breaking Changes

  • Return self after compression by @gonzedge
  • Change #letter from string to symbol by @gonzedge
  • Use symbols instead of strings for letters and hash keys by @gonzedge

Enhancements

Major

  • Do not compress terminal nodes by @gonzedge

  • Add #parent attribute by @gonzedge

  • Add #terminal? by @gonzedge

  • Add #compress! by @gonzedge

  • Add #compressed? by @gonzedge

  • Read file line by line instead of loading it all into memory by @gonzedge

  • Add ChildrenHashDeferer and TrieCompressor modules by @gonzedge

    Results of refactoring compression and hash methods

  • Remove #word caching for memory gains by @gonzedge

Minor

  • Added #transfer_ownership method by @gonzedge

0.1.0 compare

Breaking Changes

  • Rename #has_branch_tree? to #has_branch_for? by @gonzedge

Enhancements

Major

Minor

  • Set minimum RSpec version to 2.0.0 by @gonzedge

0.0.2 compare

Breaking Changes

  • Make #get_parent_letter_string protected by @gonzedge

Enhancements

Major

0.0.1 compare

Enhancements

Major

Minor