<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/lib/uri/mailto.rb, branch v4.0.4</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>[ruby/uri] Re-allow consecutive, leading and trailing dots in EMAIL_REGEXP</title>
<updated>2025-11-04T06:45:16+00:00</updated>
<author>
<name>Daisuke Aritomo</name>
<email>osyoyu@osyoyu.com</email>
</author>
<published>2025-11-04T05:34:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=397bb12778dd8940572e3fc4156085f1ca57f056'/>
<id>397bb12778dd8940572e3fc4156085f1ca57f056</id>
<content type='text'>
Effectively reverts commit https://github.com/ruby/uri/commit/788274b180d6 and
https://github.com/ruby/uri/commit/0abac721d8fe.

EMAIL_REGEXP was mostly drawn from WHATWG HTML LS. This spec states that
it intentionally violates RFC 5322 to provide a practical regex for
validation.

&gt; This requirement is a willful violation of RFC 5322, which defines a
&gt; syntax for email addresses that is simultaneously too strict (before the
&gt; "@" character), too vague (after the "@" character), and too lax
&gt; (allowing comments, whitespace characters, and quoted strings in manners
&gt; unfamiliar to most users) to be of practical use here.

The allowing of consecutive dot s(`a..a@`) and leading/trailing dots
(`.a@`, `a.@`) is not the only derivation from RFC 5322. If a truly RFC
5322-compliant regexp is needed, tt should be organized under a
different name, since too much departure from the original EMAIL_REGEXP
must be introduced.

https://github.com/ruby/uri/commit/c551d7020b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Effectively reverts commit https://github.com/ruby/uri/commit/788274b180d6 and
https://github.com/ruby/uri/commit/0abac721d8fe.

EMAIL_REGEXP was mostly drawn from WHATWG HTML LS. This spec states that
it intentionally violates RFC 5322 to provide a practical regex for
validation.

&gt; This requirement is a willful violation of RFC 5322, which defines a
&gt; syntax for email addresses that is simultaneously too strict (before the
&gt; "@" character), too vague (after the "@" character), and too lax
&gt; (allowing comments, whitespace characters, and quoted strings in manners
&gt; unfamiliar to most users) to be of practical use here.

The allowing of consecutive dot s(`a..a@`) and leading/trailing dots
(`.a@`, `a.@`) is not the only derivation from RFC 5322. If a truly RFC
5322-compliant regexp is needed, tt should be organized under a
different name, since too much departure from the original EMAIL_REGEXP
must be introduced.

https://github.com/ruby/uri/commit/c551d7020b
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] Improve performance of `URI::MailTo::EMAIL_REGEXP`</title>
<updated>2025-07-12T10:32:48+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2025-07-12T10:31:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cf7b871a94f2d44eb35676a3dbf9278a73a612c1'/>
<id>cf7b871a94f2d44eb35676a3dbf9278a73a612c1</id>
<content type='text'>
Fix the performance regression at #172 for valid emails.

``` yml
prelude: |
  require 'uri/mailto'
  n = 1000
  re = URI::MailTo::EMAIL_REGEXP
benchmark:
  n.t..t.: re.match?("n.t..t.@docomo.ne.jp")
  example: re.match?("example@example.info")
```

|         |released| 788274b| c5974f0|    this|
|:--------|-------:|-------:|-------:|-------:|
|n.t..t.  |  3.795M|  4.864M|  4.993M|  8.739M|
|         |       -|   1.28x|   1.32x|   2.30x|
|example  |  3.911M|  3.740M|  2.838M|  3.880M|
|         |   1.38x|   1.32x|       -|   1.37x|

https://github.com/ruby/uri/commit/7363a134ac
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the performance regression at #172 for valid emails.

``` yml
prelude: |
  require 'uri/mailto'
  n = 1000
  re = URI::MailTo::EMAIL_REGEXP
benchmark:
  n.t..t.: re.match?("n.t..t.@docomo.ne.jp")
  example: re.match?("example@example.info")
```

|         |released| 788274b| c5974f0|    this|
|:--------|-------:|-------:|-------:|-------:|
|n.t..t.  |  3.795M|  4.864M|  4.993M|  8.739M|
|         |       -|   1.28x|   1.32x|   2.30x|
|example  |  3.911M|  3.740M|  2.838M|  3.880M|
|         |   1.38x|   1.32x|       -|   1.37x|

https://github.com/ruby/uri/commit/7363a134ac
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] Prohibit successive dots in email</title>
<updated>2025-07-12T07:07:05+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2025-07-12T06:54:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1add45e2a6e2ab62458f04eddf24898f61e7c01d'/>
<id>1add45e2a6e2ab62458f04eddf24898f61e7c01d</id>
<content type='text'>
https://github.com/ruby/uri/commit/32335923bf
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/uri/commit/32335923bf
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] lib/uri/mailto.rb (EMAIL_REGEXP): use assertions surrounding the local part instead of a character class</title>
<updated>2025-07-12T03:31:54+00:00</updated>
<author>
<name>Nikita Levchuk</name>
<email>code@levch.uk</email>
</author>
<published>2024-12-06T10:56:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c97eba9bcd6188f39c827be3b40d29cef26c8eac'/>
<id>c97eba9bcd6188f39c827be3b40d29cef26c8eac</id>
<content type='text'>
https://github.com/ruby/uri/commit/2d7d2d9988
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/uri/commit/2d7d2d9988
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] lib/uri/mailto.rb (EMAIL_REGEXP): the local part should not contain leading or trailing dots</title>
<updated>2025-07-12T03:31:53+00:00</updated>
<author>
<name>Nikita Levchuk</name>
<email>code@levch.uk</email>
</author>
<published>2024-11-06T14:08:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0685e8caf9550c2b4e3c378ab1656c3139b96596'/>
<id>0685e8caf9550c2b4e3c378ab1656c3139b96596</id>
<content type='text'>
https://github.com/ruby/uri/commit/618e2bb640
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/uri/commit/618e2bb640
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] Include RFC2396_REGEXP module directly</title>
<updated>2022-04-22T03:00:14+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2022-04-14T18:02:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=eab354e17b4bc21d0142564ce71ebadf4ad8486a'/>
<id>eab354e17b4bc21d0142564ce71ebadf4ad8486a</id>
<content type='text'>
REGEXP is defined as RFC2396_REGEXP in lib/uri/common.rb. If we include
REGEXP then a broken URL is generated in rdoc for URI and URI::MailTo.

https://github.com/ruby/uri/commit/ed6ded9c80
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
REGEXP is defined as RFC2396_REGEXP in lib/uri/common.rb. If we include
REGEXP then a broken URL is generated in rdoc for URI and URI::MailTo.

https://github.com/ruby/uri/commit/ed6ded9c80
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] Add proper Ractor support to URI</title>
<updated>2021-07-27T07:54:27+00:00</updated>
<author>
<name>Benoit Daloze</name>
<email>eregontp@gmail.com</email>
</author>
<published>2021-06-25T11:38:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1cf111774f03c6d1ddba735cb8cc79483f16f699'/>
<id>1cf111774f03c6d1ddba735cb8cc79483f16f699</id>
<content type='text'>
* Using a module to map scheme name to scheme class, which also works with Ractor.
* No constant redefinition, no ObjectSpace, still fast lookup for initial schemes.

https://github.com/ruby/uri/commit/883567fd81
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Using a module to map scheme name to scheme class, which also works with Ractor.
* No constant redefinition, no ObjectSpace, still fast lookup for initial schemes.

https://github.com/ruby/uri/commit/883567fd81
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] Revert "Fix to support Ruby 3.0 Ractor"</title>
<updated>2021-07-27T07:54:26+00:00</updated>
<author>
<name>Benoit Daloze</name>
<email>eregontp@gmail.com</email>
</author>
<published>2021-06-25T11:24:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=090d799c2496f4c0e1f25c9970f4015fc693ff0e'/>
<id>090d799c2496f4c0e1f25c9970f4015fc693ff0e</id>
<content type='text'>
* This reverts commit 1faa4fdc161d7aeebdb5de0c407b923beaecf898.
* It has too many problems, see https://github.com/ruby/uri/pull/22 for discussion.

https://github.com/ruby/uri/commit/b959da2dc9
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* This reverts commit 1faa4fdc161d7aeebdb5de0c407b923beaecf898.
* It has too many problems, see https://github.com/ruby/uri/pull/22 for discussion.

https://github.com/ruby/uri/commit/b959da2dc9
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] Fix to support Ruby 3.0 Ractor</title>
<updated>2021-07-27T07:54:26+00:00</updated>
<author>
<name>kvokka</name>
<email>kvokka@yahoo.com</email>
</author>
<published>2021-05-29T10:29:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a288c21a5d46418e75c0f03eb12ff0782e51568d'/>
<id>a288c21a5d46418e75c0f03eb12ff0782e51568d</id>
<content type='text'>
https://github.com/ruby/uri/commit/1faa4fdc16
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/uri/commit/1faa4fdc16
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/uri] Remove RCS keywords</title>
<updated>2020-03-26T09:06:14+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>deivid.rodriguez@riseup.net</email>
</author>
<published>2020-03-13T09:54:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9e8d75e8819972377dc1457fc0d0e489bb9c533b'/>
<id>9e8d75e8819972377dc1457fc0d0e489bb9c533b</id>
<content type='text'>
https://github.com/ruby/uri/commit/1bcb1203ad
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/uri/commit/1bcb1203ad
</pre>
</div>
</content>
</entry>
</feed>
