Skip to content

Commit

Permalink
upd: v3.1.1 release infos and documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
TomFreudenberg committed Feb 26, 2023
1 parent b0ca2f0 commit cf839c2
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 15 deletions.
7 changes: 4 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ We suggest everybody using MidiSmtpServer to switch at least to latest 2.3.y. or
For upgrades from previous versions or outdated _MiniSmtpServer_ gem you may follow the guides at [Appendix Upgrade](https://midi-smtp-server.readthedocs.io/appendix_upgrade/) to get your code ready for the latest releases.


#### 3.1.1 (2023-02-21)
#### 3.1.1 (2023-02-26)

1. Add option to additional activate [pre-forking workers](https://midi-smtp-server.readthedocs.io/feature_load_balancing/#pre-forking) (beta) ([check issue 42](https://github.com/4commerce-technologies-AG/midi-smtp-server/issues/42))
2. Adjust sleep idle time while in command and data loop to speedup processing ([check issue 47](https://github.com/4commerce-technologies-AG/midi-smtp-server/issues/47))
3. Modify github workflow and apply testing of ruby 3.1 and ruby 3.2
4. Generate updated openssl test certificates for TLS tests
3. Mark the current default value `0.1` for `io_waitreadable_sleep` as deprecated, will become `0.03` in a future version.
4. Modify github workflow and apply testing of ruby 3.1 and ruby 3.2
5. Generate updated openssl test certificates for TLS tests


#### 3.0.3 (2022-02-12)
Expand Down
21 changes: 11 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ MidiSmtpServer is the highly customizable ruby SMTP-Server and SMTP-Service libr

As a library it is mainly designed to be integrated into your projects as serving a SMTP-Server service. The lib will do nothing with your mail and you have to create your own event functions to handle and operate on incoming mails. We are using this in conjunction with [Mikel Lindsaar](https://github.com/mikel) great Mail component (https://github.com/mikel/mail). Time to run your own SMTP-Server service.

Checkout all the features and improvements (3.0.1 Logging enhancement, 2.3.x Multiple ports and addresses, 2.2.x Encryption [StartTLS], 2.1.0 Authentication [AUTH], 2.1.1 significant speed improvement, etc.) and get more details from section [changes and updates](https://github.com/4commerce-technologies-AG/midi-smtp-server#changes-and-updates).
Checkout all the features and improvements (3.1.1 Process parallelization, 3.0.1 Logging enhancement, 2.3.x Multiple ports and addresses, 2.2.x Encryption [StartTLS], 2.1.0 Authentication [AUTH], 2.1.1 significant speed improvement, etc.) and get more details from section [changes and updates](https://github.com/4commerce-technologies-AG/midi-smtp-server#changes-and-updates).

MidiSmtpServer is an extremely flexible library and almost any aspect of SMTP communications can be handled by deriving its events and using its configuration options.

Expand Down Expand Up @@ -100,31 +100,31 @@ Since version 2.3 implementation and integration tests by minitest framework are

You may run all rubocop tests through the `rake` helper:

``` bash
```bash
bundle exec rake rubocop
```

You may also run all tests through the `rake` helper:

``` bash
```bash
bundle exec rake test:all
```

or with more verbose output:

``` bash
```bash
bundle exec rake test:all v=1
```

To just run just a part of the tests, you may select the `specs`, `unit`, `integration` or `stress` tests:

``` bash
```bash
bundle exec rake test:specs
```

To just run some selected (by regular expression) tests, you may use the `T=filter` option. The example will run only the tests and specs containing the word _connections_ in their method_name or describe_text:

``` bash
```bash
bundle exec rake test:all v=1 T=connections
```

Expand All @@ -147,12 +147,13 @@ We suggest everybody using MidiSmtpServer to switch at least to latest 2.3.y. or
For upgrades from previous versions or outdated _MiniSmtpServer_ gem you may follow the guides (see appendix) how to change your existing code to be compatible with the latest releases.


#### Latest release: 3.1.1 (2023-02-21)
#### Latest release: 3.1.1 (2023-02-26)

1. Add option to additional activate [pre-forking workers](https://midi-smtp-server.readthedocs.io/feature_load_balancing/#pre-forking) (beta) ([check issue 42](https://github.com/4commerce-technologies-AG/midi-smtp-server/issues/42))
2. Adjust sleep idle time while in command and data loop to speedup processing ([check issue 47](https://github.com/4commerce-technologies-AG/midi-smtp-server/issues/47))
3. Modify github workflow and apply testing of ruby 3.1 and ruby 3.2
4. Generate updated openssl test certificates for TLS tests
3. Mark the current default value `0.1` for `io_waitreadable_sleep` as deprecated, will become `0.03` in a future version.
4. Modify github workflow and apply testing of ruby 3.1 and ruby 3.2
5. Generate updated openssl test certificates for TLS tests


#### Changelog history
Expand Down Expand Up @@ -195,4 +196,4 @@ Author: [Tom Freudenberg](http://about.me/tom.freudenberg)

[MidiSmtpServer Class](https://github.com/4commerce-technologies-AG/midi-smtp-server/) is inspired from [MiniSmtpServer Class](https://github.com/aarongough/mini-smtp-server) and code written by [Aaron Gough](https://github.com/aarongough) and [Peter Cooper](https://github.com/4commerce-technologies-AG/midi-smtp-server#author--credits)

Copyright (c) 2014-2023 [Tom Freudenberg](http://www.4commerce.de/), [4commerce technologies AG](http://www.4commerce.de/), released under the MIT license
Copyright (c) 2014-2023 [Tom Freudenberg](https://github.com/TomFreudenberg), [4commerce technologies AG](https://www.4commerce.de/), released under the MIT license
2 changes: 1 addition & 1 deletion lib/midi-smtp-server/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ module VERSION

STRING = [MAJOR, MINOR, TINY].compact.join('.')

DATE = '2023-02-21'
DATE = '2023-02-26'

end

Expand Down
10 changes: 9 additions & 1 deletion mkdocs/feature_load_balancing.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,13 @@ If you need 1.000.000 mail per hour than probably 416 simultaneously processed t

The number of `max_connections` should always be equal or higher than `max_processings`. In the above examples it should be fine to use 512 or 1024 if your system does fit with its resources. If an unlimited number of concurrent TCP connections should be allowed, then set the value for `max_connections` to `nil` (which is also the default when not specified).

In addition it is possible to adjust the idle sleep time when no input data is available while in loop for commands and data. Time in fraction of seconds is available thru `io_waitreadable_sleep` option. The default value is `0.1` seconds but can be adjusted to e.g. `0.02` for faster processings.
In addition it is possible to adjust the idle sleep time when no input data is available while in loop for commands and data. Time in fraction of seconds is available thru `io_waitreadable_sleep` option. The default value is `0.1` seconds but can be adjusted up to e.g. `0.01` for faster processings. Be aware that faster processing may also raise the overall system utilization and have that in mind when tuning your environment.

<br>

!!! Note

The current default value `0.1` for `io_waitreadable_sleep` is deprecated with release 3.1.1 and will be replaced by `0.03` as the new default value in a future version.

<br>

Expand All @@ -34,6 +40,8 @@ When running ruby applications on multi-core CPUs, ruby by default will run all

Ruby has a global interpreter lock so if a server has 10 cores then to fully utilize all the cores will require spawning more than one process to listen for connections because threads are not mapped to a process. Here is a good article explaining some of the implementation details of Ruby's threads: [Ruby threads worth it?](https://medium.com/gympass/ruby-threads-worth-it-46167522142b)

<br>

!!! Note

1. GIL (Global Interpreter Lock) or GVL (Global VM Lock), act as a lock around Ruby code
Expand Down

0 comments on commit cf839c2

Please sign in to comment.