Skip to content

Releases: ruby/net-imap

v0.6.2

17 Dec 18:47
v0.6.2

Choose a tag to compare

What's Changed

Fixed

Full Changelog: v0.6.1...v0.6.2

v0.6.1

17 Dec 18:16
v0.6.1

Choose a tag to compare

What's Changed

Fixed

  • 🐛 Fix SequenceSet#max(n) when cardinality < n <= size by @nevans in #580

Miscellaneous

  • ⬆️ Bump step-security/harden-runner from 2.13.3 to 2.14.0 by @dependabot[bot] in #579

Full Changelog: v0.6.0...v0.6.1

v0.5.13

17 Dec 20:43
v0.5.13

Choose a tag to compare

What's Changed

Fixed

  • 🐛 Fix SequenceSet#delete?(num..num) to return set (backport to 0.5) by @nevans in #585
  • 🐛 Fix SequenceSet#max(n) when cardinality < n <= size (backport to 0.5) by @nevans in #586
  • 🐛 Fix config.responses_without_block = :frozen_dup (backport to 0.5) by @nevans in #588, reported by @yurikoval in #581

Documentation

  • 📚 Improve rdoc example for #uid_fetch with partial by @nevans in #532

Other Changes

  • ♻️ Refactor Config.versioned_defaults to reduce merge conflicts (backport to 0.5) by @nevans in #584

Miscellaneous

  • 📦 Drop digest from Gemfile (workaround for #576, backport to 0.5) by @nevans in #591

Full Changelog: v0.5.12...v0.5.13

v0.6.0

15 Dec 04:58
v0.6.0

Choose a tag to compare

What's Changed

Breaking Changes

  • 🔧 Update default config for v0.6 by @nevans in #539
    • responses_without_block changed from :warn to :frozen_dup
    • parser_use_deprecated_uidplus_data changed from :up_to_max_size to false (and is deprecated)
    • parser_max_deprecated_uidplus_data_size changed from 100 to 0 (and is deprecated)
  • 🔥 Use psych (>= 5.2.5) for encoding Data objects by @nevans in #543
    This changes the YAML tag for Data subclasses from ruby/object:Net::IMAP::DataSubclass to ruby/data:Net::IMAP::DataSubclass. YAML dumped by earlier net-imap versions may not load correctly. Psych >= 5.2.5 is required to dump these objects correctly.
  • 💥 Require ruby >= 3.2 (drop support for 3.1) by @nevans in #538
  • 💥✨ Change SequenceSet#size to count * and repeated numbers by @nevans in #564
    SequenceSet is used to represent both sorted sets and ordered lists (which may contain duplicates). Members are non-zero UInt32 numbers, but "*" has special meaning as "the number corresponding to the last mailbox entry". So there are four different ways to count the members of a SequenceSet.
    Previously, #size was an alias for #count. Now it differs in both relevant aspects.
    * is a unique member * is treated like 2³² - 1
    distinct set members #cardinality #count
    ordered list, including duplicates #size #count_with_duplicates
  • 🔥 Remove deprecated UIDPlusData class by @nevans in #540
    UIDPlusData was deprecated by v0.5.6. AppendUIDData or CopyUIDData will always be returned instead.
  • 🔥 Delete deprecated MessageSet by @nevans in #573
    MessageSet was deprecated by v0.5.0. Use SequenceSet instead.
  • 💥 Do not include OpenSSL and OpenSSL::SSL modules into Net::IMAP by @nevans in #533
    This only affects the ability to use OpenSSL constants from the Net::IMAP namespace.
  • 💥 Don't set verify_callback to VerifyCallbackProc by @nevans in #534
    This functionality was never documented and is redundant with the verify_callback option.

Deprecated

  • Deprecated config options for UIDPlusData in #540
    The parser_use_deprecated_uidplus_data and parser_max_deprecated_uidplus_data_size config options will be removed in v0.7.0. They are kept for backward compatibility, but they do not affect response parser results. When parser_use_deprecated_uidplus_data is changed from the default value (false), deprecation warnings are printed when parsing APPENDUID or COPYUID response codes.

Added

  • 🔒 Add when_capabilities_cached option for Config#sasl_ir by @nevans in #561
  • Net::IMAP::Config improvements
    • 🔍 Improve Config#inspect output by @nevans in #546
    • 🔍 Improve Config#pretty_print (for Kernel::pp) by @nevans in #547
    • 🔧 Update Config#inherited? for any number of args by @nevans in #552
  • Net::IMAP::SequenceSet improvements
    • ✨ Add SequenceSet#intersect! for in-place set AND by @nevans in #549
    • ✨ Add SequenceSet#xor! for in-place set XOR by @nevans in #550
    • ♻️ Coalesce entries in SequenceSet#append by @nevans in #553
    • ✨ Add SequenceSet#normalized? by @nevans in #558
    • ✨ Add SequenceSet#cardinality method by @nevans in #563
    • 💥✨ Change SequenceSet#size to count * and repeated numbers by @nevans in #564
  • Net::IMAP::NumValidator improvements
    • 🏷️ Support mod-sequence-valzer (RFC4551) in NumValidator by @nevans in #570
    • 🏷️ Add NumValidator.coerce_{type} methods by @nevans in #571

Documentation

  • 📚 Improve rdoc example for #uid_fetch with partial by @nevans in #532
  • 📚 Document SearchResult/ESearchResult compatibility by @nevans in #559
  • 📚 Minor rdoc formatting fixes by @nevans in #560

Other Changes

  • 🔥 Drop Data polyfill by @nevans in #541
    This was only used for ruby 3.1, which is no longer supported. So this is not considered a breaking change.
  • ♻️ Refactor Config.versioned_defaults to reduce merge conflcts by @nevans in #544
  • Improved Net::IMAP::SequenceSet performance
    • ⚡️ Don't memoize SequenceSet#string on normalized sets by @nevans in #554
    • ⚡ Faster SequenceSet#normalize when frozen by @nevans in #556
    • ⚡️ Faster SequenceSet#full? by @nevans in #565
    • ⚡️ Slightly faster SequenceSet#xor by @nevans in #567
    • ⚡ Avoid allocating arrays for SequenceSet bsearch (♻️ extract abstract strategy methods) by @nevans in #569
    • ♻️ Rename SequenceSet internals by @nevans in #562
    • ♻️ Reorganize SequenceSet internals by @nevans in #568

Miscellaneous

  • ✅ Stop using deprecated UIDPlusData in tests by @nevans in #542
  • ⬆️ Bump step-security/harden-runner from 2.13.1 to 2.13.2 by @dependabot[bot] in #548
  • 🐛 Fix workflow to deploy RDoc to GitHub pages by @nevans in #551
  • ⬆️ Bump actions/checkout from 5 to 6 by @dependabot[bot] in #555
  • 📦 Update release.yml for github_actions label by @nevans in #557
  • ⬆️ Bump step-security/harden-runner from 2.13.2 to 2.13.3 by @dependabot[bot] in #566
  • 🔖 Release 0.6 by @nevans in #574
  • Workarounds for "Publishing gem fails with digest gem activation failure" issue #576
    • 📦 Use latest rubygems/bundler to release gem by @nevans in #575
    • 📦 Drop digest from Gemfile by @nevans in #577

Full Changelog: v0.5.12...v0.6.0

v0.5.12

06 Oct 14:41
v0.5.12

Choose a tag to compare

What's Changed

TruffleRuby is not (yet) "officially supported" but it seems to work (with a few small caveats). Several tests are still marked as pending, but the rest all pass. #528 protects us from merging PRs that break TruffleRuby and (in some cases) JRuby.

Fixed

  • 🐛 Fix loading of net/imap for JRuby/TruffleRuby by @nevans in #530

Miscellaneous

  • ✅ Test overriding inherited ::Data methods by @nevans in #531
  • ✅ Add TruffleRuby to CI by @nevans in #528

Full Changelog: v0.5.11...v0.5.12

v0.5.11

01 Oct 13:06
v0.5.11

Choose a tag to compare

What's Changed

Added

  • ✨ Add ESearchResult#to_sequence_set by @nevans in #511
  • ✨ Add ESearchResult#each by @nevans in #513
  • ✨ Add VanishedData#each, delegated to #uids.each_number by @nevans in #522
  • support new Ractor.shareable_proc by @ko1 in #525

Fixed

  • 🐛 Fix SearchResult#== for LHS with no modseq by @nevans in #514

Other Changes

  • ✨ Allow obj.to_sequence_set => nil in try_convert by @nevans in #512
  • ♻️ Allow VanishedData#uids to be SequenceSet.empty by @nevans in #517
  • 🥅 Raise ArgumentError for #fetch with partial by @nevans in #521

Documentation

  • 📚 Fix rdoc call-seq for uid_expunge by @nevans in #516
  • 📚 Add QRESYNC to #enable (docs only) by @nevans in #518

Miscellaneous

  • ✅ Organize test files by @nevans in #515
  • ✅ Fix flaky tests with FakeServer#Connection#close mutex by @nevans in #520
  • Bump step-security/harden-runner from 2.13.0 to 2.13.1 by @dependabot[bot] in #524

New Contributors

  • @ko1 made their first contribution in #525

Full Changelog: v0.5.10...v0.5.11

v0.5.10

28 Aug 20:12
v0.5.10

Choose a tag to compare

What's Changed

Added

  • 🔎 Update SequenceSet#inspect format to Net::IMAP::SequenceSet(#{string}) by @nevans in #501
  • ⚡🔎 Abridge SequenceSet#inspect output for more than 512 entries by @nevans in #502

Fixed

  • 🐛 Fix spelling of \Remote mailbox attr constant by @voxik in #509

Documentation

  • 📚🐛 Fix mistake in SequenceSet#string= rdoc by @nevans in #497
  • 📚🐛 Fix SequenceSet creation rdoc example output by @nevans in #499

Other Changes

  • 🥅 Improve ArgumentError in SequenceSet#string= by @nevans in #498
  • ♻️ Refactor SequenceSet#dup, #clone, and #replace by @nevans in #505

Miscellaneous

  • ⬆️ Bump step-security/harden-runner from 2.12.1 to 2.12.2 by @dependabot[bot] in #496
  • ⬆️ Bump step-security/harden-runner from 2.12.2 to 2.13.0 by @dependabot[bot] in #500
  • 📉 Add SequenceSet benchmarks by @nevans in #485
  • 📉 Fix benchmark data for SequenceSet#normalize by @nevans in #503
  • ⚡ Add vernier profiler for SequenceSet tests and benchmarks by @nevans in #504
  • ⬆️ Bump actions/upload-pages-artifact from 3 to 4 by @dependabot[bot] in #507
  • ⬆️ Bump actions/checkout from 4 to 5 by @dependabot[bot] in #506

Full Changelog: v0.5.9...v0.5.10

v0.5.9

19 Jun 16:20
v0.5.9

Choose a tag to compare

What's Changed

Added

  • ✨ Add Net::IMAP::SequenceSet() coercion method by @nevans in #490

Fixed

  • 🐛 Fix SequenceSet#include? handling of invalid inputs by @nevans in #479
  • 🐛 Always remove idle response handler after done by @nevans in #481
  • 🧵 Improve synchronization of connection_state transitions by @nevans in #494

Documentation

  • 📚🐛 Fix SequenceSet documentation errors by @nevans in #480
  • 📚🐛 Fix doc & error msg for SequenceSet coersion by @nevans in #483
  • 📚 RDoc updates for SequenceSet by @nevans in #489

Other Changes

  • ♻️ Short-circuit frozen SequenceSet modifications by @nevans in #473
  • ♻️ Move SequenceSet autoload by @nevans in #491
  • ♻️ Avoid unnecessary allocation in SequenceSet[] by @nevans in #492
  • 🧵 Close socket in #disconnect before waiting for lock & thread join by @nevans in #493

Miscellaneous

  • ♻️ Generate same stringprep tables with ruby 3.4 by @nevans in #469
  • ✅ CI: Mark ruby head on windows as "experimental" by @nevans in #472
  • ✅ Update Regexp.linear_time? tests for non-CRuby by @nevans in #477
  • ✅ Add timeouts to CI workflow by @nevans in #478
  • ✅ Update ResponseReader, UIDFetchData, DeprecatedClientOptions tests by @nevans in #476
  • ⏪ Revert #472 (✅ CI: Mark ruby head on windows as "experimental") by @nevans in #482
  • ➕ Add benchmark to Gemfile to silence warnings by @nevans in #486
  • ⬆️ Bump step-security/harden-runner from 2.12.0 to 2.12.1 by @dependabot in #488

Full Changelog: v0.5.8...v0.5.9

v0.4.22

06 May 14:30
v0.4.22

Choose a tag to compare

Important

The regression fixed by this release (#471) appears to only affect Ruby 3.0.0 through 3.0.2, and only on some platforms. It appears to be fixed by ruby 3.0.3, released 2021-11-24. Ruby 3.0.7 was released on 2024-04-23. Ruby 3.0 has reached its EOL.

If you are affected by this issue, upgrading Ruby is much more important than upgrading net-imap!

What's Changed

Fixed

Full Changelog: v0.4.21...v0.4.22

v0.5.8

29 Apr 18:02
v0.5.8

Choose a tag to compare

What's Changed

Added

  • ✨ Add SequenceSet#min(count) and #max(count) by @nevans in #460
  • ✨ Add SequenceSet#above and SequenceSet#below by @nevans in #462

Fixed

  • 🐛 Check for Ractor (for JRuby, TruffleRuby) by @nevans in #453, reported by @rammpeter in #452
  • 🐛 Fix SequenceSet#slice with range (start...0) by @nevans in #456
  • 🐛 Fix inconsistently frozen SequenceSet#[] result by @nevans in #458
  • 🐛 Fix SequenceSet#xor crash when set is frozen by @nevans in #457
  • 🐛 Fix SequenceSet#slice when length > result size by @nevans in #459

Documentation

  • 📚 Various SequenceSet rdoc improvements by @nevans in #465

Miscellaneous

  • ⬆️ Bump step-security/harden-runner from 2.11.1 to 2.12.0 by @dependabot in #455
  • ✅ Test SequenceSet#xor and fuzz test all set operations by @nevans in #464

Full Changelog: v0.5.7...v0.5.8