|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## Improved performance, subscription quantity limit, and more (v2.3.0) |
| 4 | + |
| 5 | +This is a long-awaited release. Nice to meet you again in the changelog! This is the last release that supports Python 3.7, and there will not be any patch version for the v2.3.x series. Any fixes will only be applied to the next release, which will bump the minimum Python version requirement to 3.9. |
| 6 | + |
| 7 | +### Performance enhancements |
| 8 | + |
| 9 | +- **Support for Python 3.11**: Released in 2022-10-24, Python 3.11 is [10–60% (on average 25%) faster](https://docs.python.org/3.11/whatsnew/3.11.html#faster-cpython) than Python 3.10. RSStT now supports Python 3.11 and the official Docker image is based on Python 3.11. |
| 10 | +- **CPU**: Decrease the load average by ~30% (depends on the usage scenario). Thanks to a dependency migration from pure Python `fuzzwuzz` to C-extension `rapidfuzz` and a lot of performance tuning. |
| 11 | +- **Memory**: (Docker image only) Reduce memory consumption and improve memory allocation performance by adopting `jemalloc`. |
| 12 | +- **Multicore CPU**: If the environment variable `MULTIPROCESSING` is set to `1`, multiple processes will be started. The number of processes is equal to the cores of CPU, but the maximum is 3. One is the main process, the others (if any) are used to parse RSS feeds, etc. Note that it is only valid when there are more than 1 CPU core, otherwise only 1 process (main process) will be started. It may help improve the performance on multicore CPUs but consumes more memory. Usually you don't need to enable it. However, if there are tons of subscriptions or your VPS comes with multiple cores but the performance of each is poor, you may want to enable this feature. |
| 13 | +- **Bandwidth usage**: Work around an [upstream (`uvloop`) bug](https://github.com/MagicStack/uvloop/issues/471#issuecomment-1136536769) that causes the bot to use too much bandwidth. Compared to previous releases, it cuts down up to 75% bandwidth usage when `uvloop` enabled. |
| 14 | +- **Startup time**: Decrease the startup time by increasing the startup concurrency and putting some unimportant startup tasks into the background. |
| 15 | +- **Minor enhancements**: Some internal functions have been optimized to improve performance. |
| 16 | + |
| 17 | +### Additions |
| 18 | + |
| 19 | +#### Highlights |
| 20 | + |
| 21 | +- **Subscription quantity limit**: The maximum number of subscriptions per user is now configurable (default: unlimited). By using the `/set_option` command, you can set `user_sub_limit` and `channel_or_group_sub_limit`. To check or set the limit of a specific user/channel/group, use the `/user_info` command. |
| 22 | +- **Monitor watchdog**: A watchdog has been implemented to check if the feed monitor is properly running. If not, the watchdog will exit the bot. Docker, Railway or Heroku will have it automatically restarted. |
| 23 | + |
| 24 | +#### Other additions |
| 25 | + |
| 26 | +- **Leave chat if been banned**: If the bot has not the permission to send messages in a channel/group, it will leave the chat. |
| 27 | +- **`<q>` tag as quotation marks**: A `<q>` tag is now converted to quotation marks (`<q>I am a quote,</q> said Q.` -> `“I am a quote,” said Q.`). |
| 28 | +- **New l10n**: Multiple translations have been added. |
| 29 | + |
| 30 | +### Enhancements & bug fixes |
| 31 | + |
| 32 | +- **Accept 4-char usernames**: You can now use the 4-char username of your channel/group in "remote" commands. |
| 33 | +- **Ignore inline query header in commands**: Formerly, if the bot is not properly set up as an inline bot, commands would be sent with an inline query header (`@bot_username`), causing the bot not to respond. Now the bot will ignore the inline query header and respond to commands correctly. |
| 34 | +- **Skip monitoring tasks if flood waiting**: If the bot is unable to send messages to all subscribers of a feed due to rate limit, it will skip the monitoring task for that feed once. |
| 35 | +- **Exit gracefully**: If the bot receives SIGINT or SIGTERM, it will exit gracefully by closing the database connections first. Formerly, unclosed database connections would block the bot from exiting. |
| 36 | +- **Encoding detection**: Fix a bug resulting in incorrect encoding detection for some feeds. |
| 37 | +- **Drop `sr-only` elements**: Drop `sr-only` elements from the RSS feed. They are only for screen readers and should not be rendered. |
| 38 | +- **Fix mistaken command regex**: Fix some mistaken command regexes preventing the bot from responding commands correctly. |
| 39 | + |
| 40 | +### Minor bug fixes & changes |
| 41 | + |
| 42 | +More unmentioned minor bugs have been fixed in the release. The changelog does not include all the changes. For more details, please refer to the [compare view](https://github.com/Rongronggg9/RSS-to-Telegram-Bot/compare/v2.2.1...v2.3.0). |
| 43 | + |
3 | 44 | ## Published to PyPI, HTML table converter, and more (v2.2.1) |
4 | 45 |
|
5 | 46 | ### Additions |
|
9 | 50 | - **Published to PyPI**: RSStT is now available on [PyPI](https://pypi.org/project/rsstt/). You may install it with `pip install rsstt`. For more details, refer to the [Deployment Guide](deployment-guide.md). |
10 | 51 | - **HTML table converter**: An HTML table converter has been implemented to convert HTML tables to images. It requires the environment variable `TABLE_TO_IMAGE` to be set to `1`, and CJK fonts to be installed. Please do note that the converter is not perfect, cannot handle rich-text formatting, may not work for all HTML tables, and can potentially lead to a higher performance cost and longer processing time. |
11 | 52 |
|
12 | | -### Other additions |
| 53 | +#### Other additions |
13 | 54 |
|
14 | 55 | - **New l10n**: The Indonesian (`id`, Bahasa Indonesia) translation has been added. |
15 | 56 | - **Add `.env.sample`**: A sample `.env` file has been added. |
|
0 commit comments