What's Changed
Most notably, support has been added for the SASL-IR
, ENABLE
, and UTF-8=ACCEPT
extensions, and for many SASL mechanisms: EXTERNAL
, ANONYMOUS
, OAUTHBEARER
, SCRAM-SHA-1
, and SCRAM-SHA-256
.
๐ฅ Breaking changes
- ๐ฅ โฌ๏ธ Drop v2.6 support; Require v2.7.3; Use "..." arg by @nevans in #89
The test suite passes under ruby 2.7, although it does print some warnings for experimental pattern matching. - ๐ฅ Return an empty array (rather than nil) when the server doesn't send any responses, by @nevans in #192
This can affectlist
,xlist
,getquota
,lsub
,expunge
,uid_expunge
,fetch
,uid_fetch
,store
, anduid_store
. - ๐ฅ The
#extension
attribute on BODYSTRUCTURE structs no longer starts withlocation
. The location is now parsed directly and available from theBodyStructure#location
attribute. by @nevans in #113
โจ Added
Improved IMAP4rev1 protocol and extension support
- โจ Add missing "location" BODYSTRUCTURE extension data by @nevans in #113
- โจ Cache server capabilities and add
#capable?(name)
by @nevans in #156 - โจ Add support for
ENABLE
(RFC 5161) by @arnt in #98 - โจ Parse UTF-8 encoded strings, for
UTF8=ACCEPT
andIMAP4rev2
by @nevans in #111 - โจ๐ Add
SASL-IR
support by @nevans in #90
Improved SASL support
- ๐ Add SASL OAUTHBEARER mechanism by @nevans in #171
- ๐ Add SASL ANONYMOUS mechanism by @nevans in #169
- ๐ Add SASL EXTERNAL mechanism by @nevans in #170
- โจ Make SASL.authenticator case insensitive by @nevans in #167
- โจ Add attr_readers to SASL mechanisms by @nevans in #176
- โจ Allow keyword args on all SASL authenticators by @nevans in #177
- ๐ Verify SASL authentication has completed by @nevans in #179
- ๐ Add SASL SCRAM-SHA-* mechanisms by @nevans in #172
- ๐ SASL PLAIN: Raise ArgumentError for conflicts by @nevans in #181
- โจ Minor updates to SASL::Authenticators API by @nevans in #184
Improved Net::IMAP
client API
- โจ Add attr_readers for
host
andport
by @nevans in #92 - ๐งต New thread-safe API for
#responses
and add#clear_responses
by @nevans in #93 - โจ Add greeting code data to
#responses
by @nevans in #94 - โจ Add
#capable?(name)
,#auth_capable?(name)
,#auth_mechanisms
,#capabilities
, etc by @nevans in #156 - ๐ Add
#tls_verified?
by @nevans in #91 - ๐ Add
ssl_ctx
andssl_ctx_params
attr readers by @nevans in #174 - โจ Add
#logout!
to combine logout and disconnect by @nevans in #178
StringPrep profiles
- โจ Add generic stringprep algorithm and the "trace" profile by @nevans in #101
- โจ Add Nameprep stringprep profile by @nevans in #83
๐๏ธ Deprecated
- ๐๏ธ Deprecated
#client_thread
by @nevans in #93 - ๐๏ธ๐งต Soft-deprecation of current
#responses
API by @nevans in #93
The current API is not thread-safe. It is documented as deprecated, but no warning message is logged yet. - ๐๏ธ Deprecated
BodyTypeAttachment
andBodyTypeExtension
structs @nevans in #113 - ๐๏ธ Deprecate backward compatible parameters to
new
andstarttls
by @nevans in #175
Net::IMAP.new
uses keyword parameters for its options now.
Sending a port or an options hash as the second argument is documented as obsolete, but doesn't print warnings yet.
Any other positional parameters are deprecated and will print warnings.
๐ Fixed
- ๐ Fix NAMESPACE parsing (and other โป๏ธ refactoring) by @nevans in #112
- ๐ Fix BODYSTRUCTURE parser bugs by @nevans in #113
- More strict about where NIL is not allowed, e.g: number, envelope, and body. Ignoring these uncommon bugs made it difficult to workaround much more common server bugs elsewhere.
- BodyTypeAttachment and BodyTypeExtension won't be returned any more.
- Better workaround for multipart parts with... zero parts.
- ๐ Fix typo in uncommon BODYSTRUCTURE parsing code by @nevans in #185
- ๐งต Synchronize
@responses
update in thread_internal by @nevans in #116 - ๐ Add missing lookahead_case_insensitive_string by @nevans in #144
- Decode UTF-7 more strictly by @nobu in #152
- Fix for Digest MD5 bad challenges by @nobu in #160
- ๐ฅ Work around missing server responses by @nevans in #192
โป๏ธ Changed
- ๐ Improve parse error debugging by @nevans in #105
- ๐ Move the StringPrep module out of SASL by @nevans in #100
- โ ๐ Move most parser tests to yaml, add more tests, and add parser benchmarks by @nevans in #103
- ๐งช Add Regexp.linear_time? tests; โกโ Update BEG_REGEXP to pass by @nevans in #145
- โกโ Update more regexps to run in linear time by @nevans in #147
- ๐งช Add experimental new FakeServer for tests by @nevans in #157
- โฑ๏ธ Add Timeout to several existing SSL tests by @nevans in #163
- โป๏ธ Use Net::IMAP::FakeServer::TestHelper by @nevans in #164
- ๐ Move and rename SASL authenticators by @nevans in #165
- โป๏ธ Simplify lazy-loaded SASL::{Name}Authenticator registration by @nevans in #168
๐ Documentation
- ๐ Add "rake ghpages" for publishing rdoc by @nevans in #102
- ๐ Auto-deploy GitHub Pages from an action by @nevans in #135
- ๐ More rdoc updates, all related to capabilities by @nevans in #159
- SASL doc updates by @nevans in #166
- ๐ Update SASL docs and add attr_readers by @nevans in #176
- ๐ Update examples with modern SASL mechanisms by @nevans in #182
Miscellaneous
- Adds Ruby 3.2 to the CI matrix. by @petergoldstein in #99
- Bump ruby/setup-ruby from 1.143.0 to 1.144.0 by @dependabot in #138
- โ Add RFC3454 data, to support offline testing by @nevans in #137
- โฌ๏ธ Bump actions/deploy-pages from 1 to 2 by @dependabot in #140
- โฌ๏ธ Bump ruby/setup-ruby from 1.144.0 to 1.144.1 by @dependabot in #139
- โฌ๏ธ Bump ruby/setup-ruby from 1.144.1 to 1.144.2 by @dependabot in #141
- Bump ruby/setup-ruby from 1.144.2 to 1.145.0 by @dependabot in #142
- Bump ruby/setup-ruby from 1.145.0 to 1.146.0 by @dependabot in #143
- Bump ruby/setup-ruby from 1.146.0 to 1.148.0 by @dependabot in #148
- Bump ruby/setup-ruby from 1.148.0 to 1.149.0 by @dependabot in #149
- Use test-unit-ruby-core from vendored code by @hsbt in #151
- Bump ruby/setup-ruby from 1.149.0 to 1.150.0 by @dependabot in #150
- Bump ruby/setup-ruby from 1.150.0 to 1.151.0 by @dependabot in #153
- โฌ๏ธ Bump ruby/setup-ruby from 1.151.0 to 1.152.0 by @dependabot in #155
- Bump actions/upload-pages-artifact from 1 to 2 by @dependabot in #158
- Bump actions/checkout from 3 to 4 by @dependabot in #173
New Contributors
- @petergoldstein made their first contribution in #99
- @arnt made their first contribution in #114
Full Changelog: v0.3.7...v0.4.0